2011-06-27 8 views
0

私はfork()を使用しています。しかし、fork()を実行する前に、freopenを書き込みに使用してファイル(例:a.txt)を開きます。子プロセスはexeclpの出力をa.txtにリダイレクトします。子プロセスを終了した後、親プロセスはa.txtを閉じます。親プロセスがa.txtを読んで、stdoutにいくつかの情報を表示するにはどうすればいいですか?freopenを使って開いたファイルを閉じた後にstdoutに書きたい

答えて

1

親プロセスがfreopen(3)でファイルを開いた場合は、rewind(3)ライブラリ・コールは、あなたがしたいfread(3)またはfgets(3)または任意のAPIを使用するため、ファイルの先頭に再風ストリームのポインタに使用することができますつかいます。

+0

@ sarnold:しかし、私は 'stdout'に書き込むことはできません。 – miraj

+0

@miraj、aha;私はRがあなたの問題を私よりもよく理解したと思う。あなたの問題は子供のファイルに書いていますか?または、親のファイルから問題を読み取っていますか? – sarnold

+0

子供は完全に書くことができます。問題は、ファイルを読み込んで親によってstdoutに書き込むことです。 – miraj

1

freopenこのコードにはまったく属しません。実際に可能であればパイプを使用することが多い方が良いでしょうしかし

FILE *tmp = tmpfile(); 
if (!(pid=fork())) { 
    dup2(fileno(tmp), 1); 
    close(fileno(tmp)); 
    execlp(...); 
    _exit(1); 
} 
wait(&status); 
/* read from tmp */ 

:代わりに、あなたのような何かを行う必要があります。

関連する問題