システムコマンドを実行するCプログラムをAndroid/Linuxで作成しています。コマンドはいくつかのテキストをstdoutに出力し、出力を文字列または文字配列にキャプチャしようとしています。
例えば:
system("ls");
現在のディレクトリの内容をstdoutにリストし、そのデータをプログラムでCの変数にキャプチャできるようにしたいと思います。
どうすればよいですか?
ありがとう。
popen
を使用します。 fopen
のようなストリームを返します。ただし、pclose
でストリームを閉じる必要があります。これは、pclose
が子プロセスの起動に関連するリソースのクリーンアップを処理するためです。
FILE *ls = popen("ls", "r");
char buf[256];
while (fgets(buf, sizeof(buf), ls) != 0) {
/*...*/
}
pclose(ls);