我在 Windows 上有一个 Perl 程序,需要在退出时执行清理操作。我使用 编写了一个信号处理程序sigtrap
,但它并不总是有效。我可以拦截 Ctrl-C,但如果重新启动机器或以其他方式终止程序,则信号处理程序和 END 块都不会运行。我读过 Windows 并没有真正的信号,并且 Windows 上的信号处理有点像 Perl 中的 hack。我的问题是,如何以 Windows 方式处理异常终止?无论程序如何或为何终止(不包括无法捕获的事件),我都想运行我的清理代码。我读过 Windows 使用事件而不是信号,但我找不到有关如何在 Perl 中处理 Windows 事件的信息。
不幸的是,我没有权限从 CPAN 安装模块,所以我必须使用 vanilla ActiveState Perl。更有趣的是,我使用的大多数机器都只有 Perl 5.6.1。
编辑: 我会很感激任何答案,即使他们需要 CPAN 模块或更新版本的 Perl。我想了解 Perl 中的 Windows 事件处理,欢迎提供任何信息。