我创建的脚本有问题。这是我第一次使用信号,因为我希望我的脚本像守护进程一样运行,所以我设置了几个信号处理程序来正确结束我的脚本:
local $SIG{HUP} = \&StopSuperviser;
local $SIG{INT} = \&StopSuperviser;
local $SIG{QUIT} = \&StopSuperviser;
local $SIG{ILL} = \&StopSuperviser;
local $SIG{ABRT} = \&StopSuperviser;
local $SIG{TERM} = \&StopSuperviser;
这工作正常,但是当我将其中一个信号发送到我的脚本(Crt-C,kill -15,kill -1 ...)时,StopSuperviser 函数被正确调用,但我总是在脚本的输出中收到以下错误:
在全局销毁期间,参数“HUP”在空操作中不是数字。
我在谷歌上搜索过,但没有找到任何处理这种行为的东西。
有人可以对此有所了解吗?
非常感谢您的帮助
此致
弗洛朗
#感谢四位您的回复,这里是 StopSuperviser 函数:
sub StopSuperviser
{
print "On quite\n";
$StopAlarm = 1;
&DeleteThreadOrder($AllProcess);
foreach my $Subprocess (@$AllProcess) {
foreach my $thread (@{$Subprocess->{Thread}}) {
$thread->kill('USR1');
$thread->join();
}
}
exit;
}
我还使用以下包:
use Alarm::Concurrent;
这可能很重要,也可能不重要:)希望这有帮助:)
再次感谢您的回复和帮助
此致
弗洛朗