シグナル処理 for WINDOWS
処理タイムアウト時とか、終了コマンド(ctrl+c)発行時とかで割り込み処理をしたい場合があります。
UNIXでは当たり前の処理ですが、ActivePerl5.8.8なら、WINDOWSでも可能です。
use strict; $SIG{'ALRM'} = $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = \&test_sig; alarm(5); for (my $i=0; $i<30; $i++) { sleep 1 } sub test_sig { my ($prm) = @_; print "----キターーーーーシグナル($prm)----\n"; }
割り込み処理は、ハッシュ%SIGへ割り込み処理(test_sig)のリファレンスを登録すると、割り込みが発生時に起動される。
割り込みは、終了コマンド(ctrl+c)でINTシグナルが発生する。
また、alarm関数での割り込みは、引数で指定された秒数後、ALRMシグナルが発生する。