... if ($stop_flag) { kill -9, $my_pgid ; ...あれれ、もしかしてプロセスグループを kill するつもりが、プロセスグループリーダー (PID=PGID) だけ kill するという指定になってないか? バグってないか?!
kill 9, -$my_pgid と書くのが正しいのではないか? うえー、バグってるかなと思った。
そこで、man perlfunc を読んでみたのだが、kill -9, $my_pgid で正しいようだ。きっと書いた当時は man を読んだのだろう。この場合、わかりにくいし、コメントでも書いておけば良かった。
kill SIGNAL, LIST ... Unlike in the shell, if SIGNAL is negative, it kills process groups instead of processes. (On System V, a negative PROCESS number will also kill process groups, but that's not portable.) That means you usually want to use positive not negative sig- nals. You may also use a signal name in quotes.シェル (bashなど) とは違い、負の SIGNAL を指定したら、プロセスグループを kill するとある。
2011-01-29追記
書き忘れましたが、もちろんのこと、strace で実際にプロセスグループ宛になっていることを確認しています。
0 件のコメント:
コメントを投稿