2012-05-17 3 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

Nice..Это то, что я ожидал. Большое спасибо ... – sat

Смежные вопросы