我有两个C程序,我试图在一些父程序“parent.c”中调用一些子程序“child.c”,并从child.c捕获输出到stdout。我该怎么做呢?
我正在使用macOS。
这是parent.c和child.c可能看起来像
的示例parent.c
while (1)
{
// call the child program
// capture the output from the child
if (child_output == some_condition)
{
break;
}
}
child.c
printf("Hello world!")
感谢您的帮助。
答案 0 :(得分:4)
只需使用popen()
并创建FILE *
类型的流对象,您可以将其与fread()
/ fgets()
一起使用,以获取子程序的输出。阅读手册页应足以让您入门。
但这是一个例子
#include <stdio.h>
int
main(void)
{
FILE *pipe;
char line[256];
pipe = popen("ls", "r");
if (pipe != NULL) {
while (fgets(line, sizeof line, pipe) != NULL) {
fprintf(stdout, "%s", line);
}
pclose(pipe);
}
return 0;
}
另外,阅读手册以了解其实际效果如何。