kill 2, 4201 or die "Cannot signal 4201 with SIGINT : $!\n"; #说明kill不成功会返回0
kill 'INT', 4201 or die "Cannot signal 4201 with SIGINT : $!\n"; # same as last one.
kill 'INT' => 4201 or die "Cannot signal 4201 with SIGINT : $!\n"; # same as last one.
## 编号为0的signal为特殊的探测signal,仅是为了探测是否可以向进程发送信号
unless (kill 0, $pid) { # return 0 if failed to send signal 0 to $pid
warn "$pid has gone away!";
}
my $init_count=0;
sub my_ini_handler { $init_count++ }
$SIG{'INT'} = 'my_ini_handler'; # 注册“钩子”的地方
while (<SOMEFILE>) {
...; # need some time to deal with
if ($int_count){
print "[Processing interrupted...]\n";
last; # 这样就保证了没有中断正在处理的最后一个文件,但是处理最后一个结束后,就真的结束了。这个小技巧挺巧妙的。
}
}