Windowsでperl v14を使用しています。私は2つの単純なファイルを持っています:
$SIG{'INT'} = sub {
print "got SIGINT\n";
#some useful code to be executed
#on reception of signal
};
$SIG{'ALRM'} = sub {
print "got SIGALRM\n";
};
print "my pid: ",$$,"\n";
while(1)
{
print "part 1\n";
sleep(3);
print "part 2\n\n";
sleep(3);
}
上記のファイルが開始され、pid を指定して強制終了されるのを待ちます。2 番目のファイルは、pid (手動で設定) を使用して最初の perl プロセスを単純に強制終了します。
$pid = xxxx; #this is the manually entered pid for I process
print "will attempt to kill process: $pid\n";
kill INT, $pid;
最初の perl スクリプトを実行して Ctrl-C を押すと、ハンドラーは期待どおりに動作しますが、2 番目のファイルを使用すると同じ結果が得られません。ALRM、HUP、TERM、FPE などの他のシグナルも試しましたが、成功しませんでした。やりたいことは、シグナル ハンドラでコードを実行することだけです。
win32 のINT2 シグナルと呼ばれるものを見つけました。
前もって感謝します。