我創建的腳本存在問題。這是我第一次使用的信號,因爲我想我的腳本就像一個後臺進程運行,所以我設置幾個信號處理程序,要正確結束我的腳本:全球破壞期間的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