2012-03-22 9 views

答えて

4

を閉じる標準出力/エラーですが、デーモン(および子)がどこに書き込むのかを確認する必要があります。出力をログファイルにリダイレクトするのが一般的です。

デーモン(および/または子)がユーザーからの入力を読み込もうとしないように、標準入力を閉じる必要があります。

setsid()を使用して制御用TTYからデーモンをデタッチする場合、標準入力/出力/エラーはになります。

+0

デーモンは対話的ではないので、基本的には?他に特別な理由はありませんか? –

+0

自分のセッションで、制御端末からデタッチされていると、デーモンはユーザーセッションの終了、ジョブ制御、CTRL-Cなどに敏感ではありません。 – ydroneaud

+0

これは私が思ったものです。乾杯 –

6

stdin、stdout、stderrだけでなく、開いているすべてのファイルを閉じる必要があります。

ページ、「UNIX環境における高度なプログラミング」、W.リチャードスティーヴンス、アディソン・Weseley、18日印刷、1999年から不要なファイルディスクリプタをクローズする必要があります。これにより、デーモンは親から継承した可能性のある記述子(シェルや他のプロセスかもしれない)をオープンしないようにします。

Stevens氏の提案では、最大ファイルディスクリプタを取得し、その値までのすべてのファイルを閉じます。

この章では、「デーモンプロセス」について説明します。ファイルディスクリプタを閉じることは、デーモンを書き込むときに5ポイントから1ポイントに過ぎないことに注意してください。

関連する問題