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

4
有没有类似于PHP中system函数的C语言函数?
通过man system命令可以得知,system函数返回命令的状态码,但我需要像PHP那样的输出结果。
当然,我可以使用管道实现这个功能,但是否有标准方法呢?

我认为你想要使用popen('在此处输入命令')。请查阅popen的man手册。 - jim mcnamara
2个回答

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


2
如果您需要命令的输出,可以在Unix上使用popen()(使用“r”表示您要从命令中读取)。
FILE *fp = popen("some -convoluted command", "r");
...check for validity...
...read data from command...
pclose(fp);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接