在另一个程序中调用一个C程序,并获取子程序';macOS中的s输出

在另一个程序中调用一个C程序,并获取子程序';macOS中的s输出,c,parent-child,C,Parent Child,我有两个C程序,正在尝试调用某个父程序“parent.C”中的某个子程序“child.C”,并从child.C捕获到stdout的输出。我该怎么做呢 我正在使用macOS 下面是parent.c和child.c的示例 父.c 儿童 感谢您的帮助。只需使用并创建一个类型为FILE*的流对象,您可以将其与fread()/fgets()一起使用,以获取子程序的输出。阅读手册页面应该足以让您开始学习 但这里有一个例子 #include <stdio.h> int main(void) {

我有两个C程序,正在尝试调用某个父程序“parent.C”中的某个子程序“child.C”,并从child.C捕获到stdout的输出。我该怎么做呢

我正在使用macOS

下面是parent.c和child.c的示例

父.c

儿童

感谢您的帮助。

只需使用并创建一个类型为
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;
}
#包括
int
主(空)
{
文件*管道;
字符行[256];
管道=波本(“ls”、“r”);
如果(管道!=NULL){
while(fgets(线条、线条尺寸、管道)!=NULL){
fprintf(标准输出,“%s”,行);
}
pclose(管道);
}
返回0;
}
另外,请阅读手册,了解其实际工作原理

printf("Hello world!")
#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;
}