3

次の例を考えてみましょう。

パイプを作成し、子を生成し、このパイプを使用して子の標準出力を読み取る親プロセスがあります。ある時点で、親プロセスは子の出力に関心がなくなり、パイプの読み取り側を閉じます。

どうやら、子が書き込みを続けると、子プロセスがSIGPIPEシグナルを受信することになります。

質問: 子の出力をリダイレクトして/dev/null、引き続き実行して出力を生成する方法はありますが、親プロセスは他のことを続けて、後で子を呼び出すことができwaitpidますか? 子のシグナル ハンドラーを制御できないため、子のSIGPIPEハンドラーを に設定することはできません。SIG_IGN

4

3 に答える 3

2

自分自身をエミュレートし/dev/nullます --fork()子プロセスからの出力を読み取って無視する新しいプロセスです。

于 2012-07-03T00:20:30.037 に答える
1

子の SIGPIPE ハンドラを SIG_IGN に設定することはオプションではないことに注意してください。これは、子のシグナル ハンドラを制御できないためです。

単純なバイナリでラップします。(シェルスクリプトでもできます。)

于 2012-07-03T00:14:23.157 に答える