2017-02-05 8 views
2

私は2つのCプログラムを持っていて、親プログラム "parent.c"の中にいくつかの子プログラム "child.c"を呼び出そうとしています。 child.cからのstdout。これをどうやってやりますか?別のCプログラムを呼び出してmacOSで子供の出力を取得

私はmacOSを使用しています。

ここのため

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!") 

おかげでどのように見えるかparent.cとchild.cの例です助けて。

答えて

4

単にpopen()を使用して、子プログラムからの出力を得るためにfread()/fgets()で使用できるタイプFILE *のストリームオブジェクトを作成します。マニュアルページを読むだけで十分です。

しかし、ここでは一例にも

#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; 
} 

、これは実際にどのように動作するかのアイデアを得るために、マニュアルを読んでいます。

関連する問題