...
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 件のコメント:
コメントを投稿