デーモン (ソフトウェア)
技術的に厳密に言えば、Unix系システムでは親プロセスが終了していて initプロセス(プロセス番号1)を親プロセスとしていて制御端末を持たないプロセスをデーモンと認識する。POSIX準拠のOSにおけるプロセス管理の下では、デーモンプロセスは以下の性質を持つ。
独立したセッションに所属する。これにより、親プロセスのセッションリーダーが終了しても影響を受けず、実行を継続する。
制御端末を持たない。これはシェルや制御端末によるジョブ制御の対象にならないことを意味する。
親プロセスが子プロセスの終了を待たずに先に終了した場合、initプロセスが終了した親プロセスの代わりに残された子プロセスの親となる。しかし一般的なUNIXの用例として、initの子プロセスになっているかどうかに関わらず、バックグラウンド動作するプロセスを(広義の)デーモンと呼ぶ場合もある。
POSIX準拠のOSにおいて、デーモンを起動する一般的な手法は次の通りである。
forkを実行する。POSIXではプロセスグループのリーダーとなっているプロセスが新規にセッションを開始することを禁止しているために必要な処理である。この処理は親プロセスが正常に実行し続けていても可能である。この段階で親プロセスが直ちに終了する実装の場合、この処理を "fork off and die" と呼ぶ。
setsidを実行する。これにより、上記にて開始した子プロセスは新しいセッションに所属し、親プロセス側のセッション制御対象から外れる。