• ベストアンサー

コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法

はじめまして。 Linux(ディストリビューションは問わず)で コマンド(例えばlsコマンド)を実行して その出力結果を文字列で取得するプログラムを作成したいです。 コマンドの実行はsystem()で可能なのかな?と思っていますが、 コンソールに出力される内容はどのように取得して良いのか分かりません。 詳しい方がおりましたらご教授お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.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のようなリダイレクトで処理。 という処理をすることになります。

goopon
質問者

お礼

今回は、このとおりで対応したいと思います。 助かりました。ありがとうございます。 色々方法があって、もっと詳しく勉強しないとと思いました。

その他の回答 (2)

回答No.2

teeコマンドを使う手も!! system("ls -ltr /etc/hosts > | tee /DIR/HOSTS_LIST"); こんな感じで/etc/hostsファイルを/DIR/HOSTS_LISTファイルに出力すると思います。

回答No.1

system("ls -ltr /etc/hosts > /DIR/HOSTS_LIST"); こんな感じで/etc/hostsファイルを/DIR/HOSTS_LISTファイルに出力すると思います。

goopon
質問者

お礼

早速ありがとうございます。 試してみたいと思います。

関連するQ&A