如何在C中捕获进程输出?

时间:2010-12-01 12:00:17

标签: c linux unix system posix

在C中是否有PHP系统的模拟?

man system说,system返回命令的状态,但我需要输出(就像在PHP中一样)。

当然,我可以使用管道,但有没有标准方法?

2 个答案:

答案 0 :(得分:3)

您可以将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);

Ideone link

答案 1 :(得分:2)

如果您需要输出命令,则在Unix上使用popen()(使用“r”表示您要从命令中读取)。

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