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の受信時に呼び出されます。3 つのシグナルに対して 1 つのシグナル ハンドラを宣言しました。

どの信号が受信されているかを調べたい。

では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 に答える