Как захватить вывод процесса в C? - PullRequest
4 голосов
/ 01 декабря 2010

Есть ли аналог системы PHP в C?

man system говорит, что system возвращает статус команды, но мне нужен вывод (как в PHP).

Конечно, я могу использовать каналы для этого, но этоЕсть ли стандартный способ?

Ответы [ 2 ]

3 голосов
/ 01 декабря 2010

Вы можете использовать popen и связанные функции как:

// command to be run.
char *cmd = "date"; 

// open pipe stream.
FILE *fp = popen(cmd,"r");
int ch; 

// error checking.
if(!fp) {
        fprintf(stderr,"Error popen with %s\n",cmd);
        exit(1);
}   

// read from the process and print.
while((ch = fgetc(fp)) != EOF) {
        putchar(ch);
}

// close the stream.
pclose(fp);

Идеальная ссылка

2 голосов
/ 01 декабря 2010

Если вам нужен вывод команды, вы должны использовать popen() в Unix (с «r», чтобы указать, что вы хотите прочитать из команды).

FILE *fp = popen("some -convoluted command", "r");
...check for validity...
...read data from command...
pclose(fp);
...