私はforkとexecvを使って別のプロセスを起動するアプリケーションを書いています。ステータスに関する通知用のパイプを作成し、起動されたプロセスのメインエントリから、正しく起動されたことを通知するためにいくつかのバイトを書きます。それ以外の場合は、書き込みパイプがforkされたプロセスで閉じられているため、readは0を返します。UNIXでfd 2を一時的に無効にする方法はありますか?
唯一の問題は、プロセスが起動しない場合(ライブラリがない場合)、これについてstderrにメッセージが表示されることです。メッセージは、間違っているとシェルに書き込まれます。私は静かにそれをやりたいです。しかし、私がexecvの前にclose(2)をしても、私は何が欲しいのかというメッセージを持っていません。それでも私はstdrのためにfd 2を開いたままにしたいと思います。
親プロセスがエラーメッセージを見たい場合は、 'dup(1,2)'。 –