16.19 ゾンビプロセスの蓄積を防ぐ

  • 終了した子プロセスの状態を確認する必要がない場合
$SIG{CHLD} = 'IGNORE';
  • 終了したプロセスの状態を意図的に確認する必要がある場合
use POSIX ":sys_wait_h";

$SIG{CHLD} = \&REAPER;
sub REAPER {
  my $stiff;
  while (($stiff = waitpid(-1, WNOHANG)) > 0) {
    # $stiffを使用して、必要な処理を行う
  }
  $SIG{CHLD} = \&REAPER;  # waitpidの呼び出しよりも後にインストールする
}