fetish 3 Denunciar post Postado Junho 1, 2009 Bom eu estou criando um programa que usa o system só que nesse system tem uma função que se chama: substr_count e nessa função substr_count, aceita apenas char *, vejam abaixo: printf("%d",substr_count((char *) system("pstree"),"gedit")); Alguem poderia me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
Ramon Mayor Martins 0 Denunciar post Postado Junho 1, 2009 tem como postar o codigo todo,pra ter uma ideia do que quer fazer ? Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Junho 1, 2009 Não tem nao, nao exibiu esse erro na hora de compilar. Olha de novo :x Compartilhar este post Link para o post Compartilhar em outros sites
Ramon Mayor Martins 0 Denunciar post Postado Junho 1, 2009 rs. tinha contado errado xD perdao... Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Junho 1, 2009 O retorno da função é um inteiro dizendo se a função obteve sucesso ou não. Mas veja...o resultado do comando passado a ela...é o texto que você quer. Então ou você pega os dados da stdout,ou redireciona o conteudo desse comando para um arquivo,pega o conteudo por C e executa o que você quer,depois se quiser deleta o arquivo. Tem outras soluções.Essas foram as que vieram a minha mente no momento. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Junho 1, 2009 As idéias do eibon são boas pois são relativamente fáceis, mas são meio pog's... :P :P O que você quer é criar um pipeline entre o seu processo e o "pstree". Conectar o stdin do seu processo no stdout do "pstree" e ler o output. Como fazer em um nível mais baixo: http://forum.imasters.com.br/index.php...12&hl=pipes Eu te aconselho a aprender como fazer isso em baixo nível, ao invés de usar a função popen. Até pq você tem mais "liberdade" ao fazer a sua própria função. Para saber mais: http://www.advancedlinuxprogramming.com/al...lp-ch05-ipc.pdf http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Junho 1, 2009 Eibon poderia me dar um exemplo de como faria isso? Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Junho 1, 2009 #include <stdio.h> #include <stdlib.h> int main(){ FILE * fp; int fpSize; char *buf; system("pstree > teste.txt"); fp = fopen("teste.txt" , "rb"); if (fp == NULL){ puts("Erro ao tentar abrir o arquivo para leitura."); return 1; } fseek(fp, 0, SEEK_END); fpSize = ftell(fp); rewind(fp); buf = (char*)malloc(fpSize); fread(buf, 1, fpSize, fp); fclose(fp); remove("teste.txt"); printf("%s", buf); return 0; } Gambiarra...a da stdout também.Não sabia até ler o comentário do vitor e a popen da stdin. Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Junho 1, 2009 Ah saquei, vlw ai, pode colocar como resolvido :) Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Junho 2, 2009 Fetish Eu te mostrei como fazer da forma correta, e você vai optar pela gambiarra??? Bonito hein... ¬¬ No mais, Não tou aqui pra discutir questões morais, faça o que você quiser! Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Junho 2, 2009 @Victor Desculpa velho, mais eu tenho pressa não tenho tempo para ler muita coisa... Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Junho 3, 2009 Usa a popen então...xP Compartilhar este post Link para o post Compartilhar em outros sites