2012-01-25 21 views
0

私のCプログラムで日付などのシステムコマンドを実行し、出力をchar * dateにパイプして後で使用する方法はありますか?私は "システム"コマンドを使用しようとしていましたが、システムを実行しています( "日付")。直ちに日付出力をstdoutに出力します。自分のプログラム内でシステムやエグゼクティブを使ってこのデータを取得したい。どんな提案も高く評価されます...C言語でのexec */system出力のパイプ処理

ありがとう!

+0

「man popen」をご覧ください。 –

答えて

3

popen()をご覧ください。あなたはそうのように、それとのFILEポインタを開く:

#include <stdio.h> 
FILE *f = popen("date", "r"); 

そして、あなたは選択のあなたのバッファにfからの読み取りにfread()またはfscanf()を使用することができます。

+0

fread/fscanfの代わりにfgetsを使用しました。マルチスレッドアプリケーションでpopenを使用する際に他に考慮すべき点があるかどうかは疑問でした。 –

+1

@ the.director最初に、私は 'popen()'とpthreadsについての経験はありませんが、このフォーラムスレッドは、それが大丈夫だと示唆する推論(およびドキュメント)を表示します:http://cboard.cprogramming.com/linux-programming/136406 -popen-thread-safe.html –

1

あなたは、おそらくそれはあなたのためにすべてをセットアップし、あなたはあなたがstdio.hで宣言された関数popenが必要

2

何をしたいんpopen()

をしたいです。その後、コマンドの出力をファイルのように読むことができます。

1

参照として、次のコードスニペットを使用できます。

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    FILE *fp; 
    char *command="date"; 
    char line[256]; 

    if ((fp = popen(command, "r")) == NULL) { 
     perror("popen failed"); 
     return -1; 
    } 

    while (fgets(line, sizeof(line), fp)) 
     printf("%s", line); 

    pclose(fp); 
    return 0; 
} 
+0

'popen'の結果のキャスト'(FILE *)は必要ですか? 'popen'はすでに' FILE * 'を返します。 –

+0

@undur_gongorはい、あなたは正しいです..私はコードを更新しました..ありがとう! :) –

関連する問題