我在 Windows 上使用 perl v14。我有 2 个简单的文件:
$SIG{'INT'} = sub {
print "got SIGINT\n";
#some useful code to be executed
#on reception of signal
};
$SIG{'ALRM'} = sub {
print "got SIGALRM\n";
};
print "my pid: ",$$,"\n";
while(1)
{
print "part 1\n";
sleep(3);
print "part 2\n\n";
sleep(3);
}
上面的文件在给出它的 pid 后启动并等待被杀死。第二个文件只是使用它的 pid(手动设置)杀死第一个 perl 进程。
$pid = xxxx; #this is the manually entered pid for I process
print "will attempt to kill process: $pid\n";
kill INT, $pid;
我运行第一个 perl 脚本并按 Ctrl-C,处理程序按预期工作,但使用第二个文件我无法获得相同的结果。我也尝试过其他信号,如 ALRM、HUP、TERM、FPE,但没有成功。我要做的就是在信号处理程序中执行代码。
我为 win32找到了一个叫做 INT2 信号的东西。
提前致谢。