- ベストアンサー
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
はじめまして。 Linux(ディストリビューションは問わず)で コマンド(例えばlsコマンド)を実行して その出力結果を文字列で取得するプログラムを作成したいです。 コマンドの実行はsystem()で可能なのかな?と思っていますが、 コンソールに出力される内容はどのように取得して良いのか分かりません。 詳しい方がおりましたらご教授お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
popen/pclose を使います。 --- char buff[1024]; FILE *fp = popen("ls", "r"); while (fgets(buff, sizeof(buff), fp)) { printf("fgets: %s", str); } pclose(fp); --- こんな感じ。 popen は、入力と出力のどちらか一方しか制御できませんので、入出力の両方を処理したい場合は、 ・まじめにやる場合: 入力用・出力用、2本 pipe をつくり、それを標準入出力に dup してからfork&exec ・手をぬく場合: どちらかはANo.1のようなリダイレクトで処理。 という処理をすることになります。
その他の回答 (2)
- pepe_clift
- ベストアンサー率20% (52/255)
teeコマンドを使う手も!! system("ls -ltr /etc/hosts > | tee /DIR/HOSTS_LIST"); こんな感じで/etc/hostsファイルを/DIR/HOSTS_LISTファイルに出力すると思います。
- pepe_clift
- ベストアンサー率20% (52/255)
system("ls -ltr /etc/hosts > /DIR/HOSTS_LIST"); こんな感じで/etc/hostsファイルを/DIR/HOSTS_LISTファイルに出力すると思います。
お礼
早速ありがとうございます。 試してみたいと思います。
お礼
今回は、このとおりで対応したいと思います。 助かりました。ありがとうございます。 色々方法があって、もっと詳しく勉強しないとと思いました。