SIGCHLDシグナル

SIGCHLDシグナルはプロセスが終了したとき親プロセスに対して送信される。SIGCHLDシグナルは他のシグナルと異なり特別に扱われる。

SIGCHLDを受信したプロセスでは、受信処理(do_signal関数)では以下のように動作する。

  • デフォルト(SIG_DFL)時は、送信側(sned_sig関数)で 何も処理を行わずシグナルを破棄する。
  • 無視指定(SIG_IGN)時は、ZONBIE状態となった子プロセスの 資源開放(sys_wait4関数)を行う。全てLinuxカーネル内で 処理されるため、ユーザプロセスからは何も見えない。
  • ハンドラを登録している場合は、通常のシグナルと同様に 動作する。

子プロセスの終了を待つ(waitシステムコール)必要が無いのであれば、SIGCHLDシグナルは無視指定(SIG_IGN)におけば、システム内に意味無くZOMBIEプロセスが増えることはない。


(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1