「デーモン(daemon)プロセスの生成」の編集履歴(バックアップ)一覧に戻る
UNIXは親プロセスの番号が 1 (init) で、制御端末を持たないプロセスをデーモンと認識する。
* プロセスを制御端末から切り離す。 * プロセスをセッションリーダーにする。 * プロセスをプロセスグループのリーダーにする。 * forkとexitを1度か2度行い、プロセスをバックグラウンドに残す。この処理は、プロセスをセッションリーダーにするためにも必要なこともある。また、この処理は親プロセスが正常に実行し続けることを許可する。この処理を "fork off and die”と呼ぶ。 * プロセスのカレントディレクトリをルートディレクトリ("/")にすることにより、プロセスが他ディレクトリを使用中にしないようにする。 * umaskを0に変更する。これは、open()、creat()、その他の呼出しに、それら自身のパーミッションマスクを与え、呼出し側のumaskに影響されないようにするためである。 * 実行時に親プロセスがオープンしたままの、親プロセスから継承したすべてのオープンファイルをクローズする(必要なファイルは後からオープンする)。クローズするファイルにはファイルデスクリプタ0,1,2(stdin標準入力,stdout標準出力,stderr標準エラー出力)も含まれる。 * 標準ストリーム(stdin、stdout、stderr)をログファイルまたはシステムコンソールまたは/dev/nullにリダイレクトする。