Perlのシグナルハンドラ
シグナル受信時実行するサブルーチンの設定
$SIG{シグナル名} = サブルーチン名;
シグナル受信時の動作をデフォルトに戻す
$SIG{シグナル名} = 'DEFAULT';
シグナルの受信を無視
$SIG{シグナル名} = 'IGNORE';
シグナルの一部
SIGINT: interrupt, Ctrl+Cによる中断
SIGTERM: termination, killコマンドのデフォルトシグナル
SIGALRM: alarm, alarmで設定した時間が経過
10秒経つ前にCtrl+C押した場合、即座に終了せずループを抜けて終わる例
use 5.018; use strict; use warnings; use utf8; my $stop = 0; $SIG{INT} = sub { $stop = 1; }; print "start"; for (1..10) { sleep(1); print "sleep:$_"; if ($stop) { last; } } print "end";