シグナルハンドラ

back
C-c や、kill によるシグナルのハンドラ

特殊ハッシュ %SIG に、シグナルが発生したときに実行するサブルーチンをセット

--------
#!/usr/bin/perl

$SIG{TERM} = \&catch_sig;
$SIG{INT} = \&catch_sig;

while(1) {
	print "loop\n";
	sleep(1);
}

sub catch_sig {
        my $signal = shift;
        print "$signal\n";
        exit 0;
}
--------
みたいな。

kill(引数なし)は TERM
C-c は INT
Linuxのshutdown時は HUP
などなど

ただし、KILL は拾えない。

サブルーチンでは、$ARGV[0] に、シグナルの種類の文字列が渡されるので、
shiftで拾っておけば、出力などに使える

back