6

我写了一个简单的程序来处理一些信号。我的计划是,

#!/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。我试图找到它。但是,我没有找到任何答案。

4

1 回答 1

12

信号名称(INT、TERM 等)作为参数传递给信号处理程序。你可以写例如:

sub signal_handler
{
    my $signal = shift;
    print " ".localtime()." Handled the signal $signal\n";
}
于 2012-05-17T10:36:32.487 回答