小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

シグナル処理 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シグナルが発生する。