16

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

例えば:

system("ls");

現在のディレクトリの内容をstdoutに一覧表示し、そのデータをプログラムでCの変数にキャプチャできるようにしたいと思います。

どうすればよいですか?

ありがとう。

4

1 に答える 1

18

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

FILE *ls = popen("ls", "r");
char buf[256];
while (fgets(buf, sizeof(buf), ls) != 0) {
    /*...*/
}
pclose(ls);
于 2012-08-07T07:06:03.690 に答える