【发布时间】:2012-01-13 06:03:34
【问题描述】:
我在 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 事件处理,欢迎提供任何信息。
【问题讨论】:
-
Perl 5.6.1.. 那是什么,就像 10 岁?你在这些机器上安装了 Win98/2000/ME 吗? =)
-
我们在所有台式机上都使用 Windows XP。当微软停止支持 XP 时,我们有望在 Windows 7 上运行。不管你信不信,我们的一些机器仍然使用 IE6,因为我们的一些内部应用程序无法在其他任何东西上运行。
-
我的意思是作为参考。perl 5.6.1 与那些操作系统一样过时。这总是让我想知道为什么人们不更新 perl。不更新任何其他软件并不是一个好主意。
标签: windows perl events signals activestate