我创建的脚本存在问题。这是我第一次使用的信号,因为我想我的脚本就像一个后台进程运行,所以我设置几个信号处理程序,要正确结束我的脚本:全球破坏期间的SIG错误
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”isn'全局销毁期间的空操作中的数字。
我已经在谷歌搜索,但没有找到任何处理这种行为。
有人可能会在这个?
非常感谢你的帮助
问候
弗洛朗
#感谢Four的答复,这里是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;
这可能重要的是知道,也可能不会再
谢谢:) 希望这有助于:)您回应并帮助
问候
弗洛朗
请告诉我们的'子StopSuperviser'内容。 – pndc
好点,@Peter,也许他滥用'$ _ [0]'。 – ikegami
@ikegami这是我的怀疑,但我们需要看到代码是肯定的。 – pndc