2012-04-08 8 views
1

私は別のプログラムの出力を処理するプログラムを作成しています。Cを使用して処理しています

私のテストプログラムはtestと呼ばれ、fileというプログラムのstdout出力を処理したいとします。私は、コマンドラインで、次の実行時に

FILE *fp; 
fp = fopen("/dev/stdin", "r"); 

これは動作します:./file | ./test次のように

testでは、私はファイルとしてstdinを読んでいます。

しかし、私はI/Oリダイレクトを使用したいと考えています:./file > ./test。どのように私はCでそれを処理できますか?

+0

これは、正しい構文を使用して、あるプログラム(ファイル)の出力を別のプログラム(テスト)にパイプするときに機能します。これは、プログラムとしてパイプをプログラムで処理したい場合は、 (テスト中に) 'popen'を実行して開き、" file "を実行します(popenは' file'の出力を表す 'FILE *'を返します)。 – ShinTakezou

答えて

3

>を使用したI/Oリダイレクションは、あるプログラムから別のプログラムにパイプ出力するためのものではありません。 1つのプログラムからの出力をファイルにリダイレクトします。コマンド

./file > ./test 

は、プログラムfileを実行し、fileからの出力が含まれてい新しいファイルtestを作成します。 testというプログラムは実行されません。実際には存在する場合は上書きされます。

関連する問題