終了時にクリーンアップアクションを実行する必要があるWindows上のPerlプログラムがあります。を使用してシグナルハンドラーを作成しsigtrap
ましたが、常に機能するとは限りません。Ctrl-Cをインターセプトすることはできますが、マシンが再起動されたり、プログラムが他の方法で強制終了されたりすると、シグナルハンドラもENDブロックも実行されません。私は、Windowsには実際にはシグナルがなく、Windowsでのシグナル処理はPerlの一種のハックであることを読みました。私の質問は、Windowsの方法で異常終了を処理するにはどうすればよいですか?プログラムが終了する方法や理由に関係なく、クリーンアップコードを実行したい(キャッチできないイベントを除く)。Windowsがシグナルの代わりにイベントを使用することを読みましたが、PerlでWindowsイベントを処理する方法に関する情報が見つかりません。
残念ながら、私にはCPANからモジュールをインストールする権限がないため、バニラActiveStatePerlを使用する必要があります。さらに面白くするために、私が使用しているほとんどのマシンにはPerl5.6.1しかありません。
編集: CPANモジュールまたは新しいバージョンのPerlが必要な場合でも、回答をいただければ幸いです。PerlでのWindowsイベント処理について知りたいのですが、どんな情報でも歓迎します。