2012-05-17 26 views
2

我寫了一個簡單的程序來處理一些信號。 我的計劃是,如何找到哪個信號在perl中被接收?

#!/usr/bin/perl 

use strict; 
use warnings; 

$SIG{INT} = $SIG{TERM} = $SIG{HUP} = \&signal_handler; 

sub signal_handler 
{ 

print " ".localtime()." Handled the signal\n"; 

}; 

while(1) 
{ 
    sleep(1); 
} 

什麼是對應信號處理程序 的%SIG哈希指定的信號將在接收信號的時候被調用。 我宣佈了三個信號的一個信號處理程序。

我想找到接收哪個信號。

C,它會通過信號處理程序參數本身給出信號編號。

例,

void sig_handler(int signo); 

我不知道perl.I試圖找到that.But,我沒有找到任何答案。

回答

9

信號名稱(INT,TERM等)作爲參數傳遞給信號處理程序。你可以寫例如:

sub signal_handler 
{ 
    my $signal = shift; 
    print " ".localtime()." Handled the signal $signal\n"; 
} 
+0

尼斯..這是我的預期。非常感謝你... – sat