アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。

Linux(ディストリビューションは問わず)で
コマンド(例えばlsコマンド)を実行して
その出力結果を文字列で取得するプログラムを作成したいです。

コマンドの実行はsystem()で可能なのかな?と思っていますが、
コンソールに出力される内容はどのように取得して良いのか分かりません。

詳しい方がおりましたらご教授お願い致します。

A 回答 (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のようなリダイレクトで処理。
という処理をすることになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/15 23:35

teeコマンドを使う手も!!


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

system("ls -ltr /etc/hosts > /DIR/HOSTS_LIST");


こんな感じで/etc/hostsファイルを/DIR/HOSTS_LISTファイルに出力すると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/15 23:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A