2012-08-07 9 views
10

私はシステムコマンドを実行するAndroid/Linuxの下にCプログラムを書いています。コマンドはstdoutに何らかのテキストを出力し、出力を文字列または文字配列にキャプチャしようとしています。Cでstdoutからシステムコマンドの出力を取得

system("ls"); 

はstdoutに、現在のディレクトリの内容を一覧表示します、と私はどのように私はC.

でプログラム変数にそのデータをキャプチャできるようにしたいと思います。たとえば

これを行う?

ありがとうございました。

答えて

13

popenを使用します。 fopenのようなストリームを返します。ただし、ストリームをpcloseで終了する必要があります。これは、pcloseが子プロセスの起動に関連するリソースをクリーンアップするためです。

FILE *ls = popen("ls", "r"); 
char buf[256]; 
while (fgets(buf, sizeof(buf), ls) != 0) { 
    /*...*/ 
} 
pclose(ls); 
+0

ありがとうございました。 – user1118764

関連する問題