2011-04-12 12 views
0

system()コマンドを使用してCプログラム内でスクリプトを実行しようとしています。 main()の中で、スクリプトを実行して結果を返します。スクリプトの結果を文字列に入れて条件を確認するにはどうすればよいですか?私はファイルでそれを行うことができますが、文字列に結果を入れることが可能かどうか疑問に思っていました。UnixとCの出力リダイレクション

サンプルは次のようになります:

main() 
{ 
    system("my_script_sh"); // How can I get the result of the my_script_sh 
} 

答えて

5

システムコマンドを使用することはできません。 my_script_sh | ./your_c_programしてからC:例えば - 一番簡単な方法は、あなたのプログラムのうち、system("my_script_sh")を取り、パイプでシェルからプログラムを起動することであろう

FILE *stream; 
    char buffer[150];  
    stream = popen("ls", "r"); 
    while (fgets(buffer, 150, stream) != NULL){ 
     // Copy the buffer to your output string etc. 
    } 

    pclose(stream); 
+0

ありがとう:ここ

は役に立つかもしれないいくつかのリンクです。ポピェンしようとします。 – user629034

0

使用popen()char *バッファにストリームを読み込みます。

0

まあ:行うための最善のことは、popenを使用していますプログラムはstdin(ファイル記述子0)から読み込みます。

これができない場合は、man 3 popenをご覧ください。基本的にsystemの代わりにpopenを使用すると、プログラムの出力を得るために読むことができるファイルハンドルが得られます。

関連する問題