Proc::Wait3のwait3を使っているところを ※はじめのほうでuse POSIX qw(:sys_wait_h);としておくmy $option = !defined $pid ? 0 : &WNOHANG; if (my $exit_pid = waitpid -1, $option) { delete $worker_pids{$exit_pid}; }waitpidに変えてみて、このスクリプトを実行し、親プロセスに対してkill -TERM $pidなどとすると確かに制御が返ってこない(正確には子プロセスが終了するまで待ち状態になるようだ)。本当にpreforkなデーモンの実装にしてしまうとたしかにwait3を使わないと致命的っぽい。 ということでwait3。存在を知っていた程度でforkする時はwait or waitpidしか使ってなかったが、なかなか有用だ。wait4