を使用してfork()
います。ただし、 を実行する前に 、書き込みに使用してファイル (たとえば ) をfork()
開きます。これで、子プロセスは の出力をにリダイレクトします。子プロセスの終了後、親プロセスは終了します。では、親プロセスはどのように情報を読み取って表示できますか?a.txt
freopen
execlp
a.txt
a.txt
a.txt
stdout
質問する
709 次
2 に答える
1
親プロセスが でファイルを開いた場合freopen(3)
、rewind(3)
ライブラリ呼び出しを使用して、ストリームのポインタをファイルの先頭に巻き戻し、fread(3)
または使用しfgets(3)
たい API で使用できます。
于 2011-06-27T23:13:11.630 に答える
1
freopen
このコードにはまったく属していません。代わりに、次のようにする必要があります。
FILE *tmp = tmpfile();
if (!(pid=fork())) {
dup2(fileno(tmp), 1);
close(fileno(tmp));
execlp(...);
_exit(1);
}
wait(&status);
/* read from tmp */
ただし、可能であれば、パイプを使用する方が実際にははるかに優れています。
于 2011-06-27T23:13:43.203 に答える