问题标签 [shutdown-hook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3941 浏览

java - 检测Java应用程序中的Windows注销事件

是否有一个库可以与 Java 一起使用来监听用户注销和可能的其他 Windows 事件?(如果它支持多个平台就更好了!)

我记得几年前读过关于这种图书馆的书,但现在似乎找不到了。我已经看到其他线程在使用带有 win32ts 的 Python 时基本上做同样的事情。

如果它是免费和/或开源的也更好。

谢谢。

注意: using 的候选解决方案Runtime.getRuntime().addShutdownHook(Thread)不能与javaw. 我仍在寻找适用于 javaw 的解决方案。请参阅 java 错误 ID 44865804302814。谢谢--cam

0 投票
2 回答
144807 浏览

java - Java中关闭挂钩的有用示例?

我试图确保我的 Java 应用程序采取合理的步骤来保持健壮,其中一部分涉及优雅地关闭。我正在阅读有关关闭挂钩的信息,但实际上我并没有真正了解如何在实践中使用它们。

那里有一个实际的例子吗?

假设我有一个像下面这样一个非常简单的应用程序,它将数字写入文件,将 10 写入一行,分批 100 个,并且我想确保在程序中断时完成给定的批处理。我知道如何注册一个关闭挂钩,但我不知道如何将它集成到我的应用程序中。有什么建议么?

0 投票
1 回答
656 浏览

javascript - Flex ExternalInterface 在 Safari 中未触发(在其他任何地方都可以使用!)

我知道在让 JavaScript / Flex ExternalInterface 运行良好方面还有其他问题,但我认为这是一个奇怪的问题。它在除Safari(在 Mac 上)之外的所有浏览器中都能完美运行。Chrome、IE、Firefox - 一切正常,但 Safari,不,它只是不会触发。我在下面复制了我的代码,任何人都可以看到为什么它在 Safari 中不起作用吗?

(“你确定”对话框窗口出现在 Safari 中,但 Flex 应用程序中的方法没有被调用)

干杯亚历克斯

弹性代码:

JavaScript 代码:

0 投票
1 回答
1378 浏览

vbscript - 使用 windows-scripting-host 关闭 Hook

链接讨论如何使用 VB 实现关闭挂钩。现在我的问题是,可以使用 Windows 脚本主机/Windows 脚本主机完成类似的操作吗?

非常感谢您的意见;也许包括一些代码片段。

0 投票
1 回答
6272 浏览

php - 当从命令行杀死脚本时,PHP 的 register_shutdown_function 会触发吗?

当从命令行(通过 Ctrl+c)或使用 kill 命令杀死 cron 进程时,是否可以调用函数?

我试过register_shutdown_function()了,但是当脚本被杀死时似乎没有被调用,而是在脚本正常结束时被调用。

我正在尝试将结果记录到文件中并在 cron 实例自动终止时更新数据库值(即运行时间过长)。

0 投票
2 回答
2708 浏览

java - Java注解处理:如何知道一轮是否是最后一轮?

扩展时AbstractProcessor,有可能覆盖init(...),但没有“相反”的方法,将在处理完所有轮次后调用。

这是一个问题:当您必须将每轮收集的信息附加到同一个文件时,您永远无法关闭文件,因为您永远无法知道一轮是什么时候。因此,该文件永远不会关闭并保持为空。

使用关闭钩子也不起作用,永远不会调用该钩子。

有任何想法吗?

0 投票
7 回答
1460 浏览

java - jvm:是否有可能在关闭钩子中找出由于OOM而关闭的进程?

我有一个在 java (1.6) 中运行的关键进程,带有一个已注册的关闭挂钩。在某些情况下,我遇到了 OOM 问题(下面有关于该问题的更多详细信息),进程突然停止,我没有得到任何日志,我的 catch(Throable x) 没有捕获异常。

但是关闭挂钩有效。因此,如果有办法知道该进程将由于一些讨厌的 OOM 而关闭,我可以在退出之前记录必要的信息。

有没有办法做到这一点?

关于 OOM:不确定是什么异常,因为正如我所说,它没有被捕获。我知道这是一个 OOM,因为我开始这个过程

我得到一个堆转储文件。在其他情况下,会捕获一个异常,这是一个 ava.lang.OutOfMemoryError: GC 开销限制超出。但不确定是否总是这样。

编辑:

如果不清楚:我不是试图阻止 OOM,因为在某些情况下它可能出于正当原因发生,我只是想确保在应用程序日志文件中清楚

我的问题是:是否有可能在关机钩子中找出由于 OOM 而关闭的进程?

我需要以编程方式并从同一进程执行此操作。

目前最好的方法是查看它是否存在最近日期的 process_.hprof(我知道 pid)的堆转储文件 java_pid_pid 并推断存在 OOM。我想我可以尝试 Runtime.getRuntime().freeMemory() 并在可用内存非常低时报告问题,但不确定这有多可靠,也许当进程关闭时它已经释放了很多内存,该方法以上是我认为最好的。

0 投票
1 回答
1162 浏览

ant - Ant 构建关闭 - Ctrl C

我有一组用于运行测试套件的 ant 任务,有时其中一个测试会冻结,我的整个测试套件会挂起。我添加了一个关闭处理程序,所以当我点击Ctrl+ Cant 时,它会优雅地关闭并给我一个报告,最终测试标记为未运行。(这很重要,因为这些是集成测试,可以运行数小时)这很好用,除了在没有调用我的关闭挂钩的 Windows 上。有没有办法让蚂蚁响应任何类型的输入并优雅地关闭?

0 投票
1 回答
1155 浏览

php - 是否有用于执行代码后内容交付的 Symfony register_shutdown_function / destroy 等效项?

在向用户发送响应后,我需要发生各种事情,例如 register_shutdown_function过去是如何工作的。

我玩过 sfShutdownPlugin,它只使用 register_shutdown_function,我也看过使用析构函数(仅在动作上),但 Symfony 似乎不太喜欢,postExecute 方法仍然发生在内容之前已发送。

0 投票
1 回答
162 浏览

java - 运行 Windows 服务和 cobertura

我正在尝试使用 cobertura 运行 Windows 服务。唯一的问题是执行关闭挂钩时 cobertura 会报告结果。我无法直接修改这些结果的代码,所以我想知道是否可以将 java 应用程序作为 Windows 服务运行并仍然收集 cobertura 结果。我检测代码,将其添加到类路径中,但是在报告时,我什么也没得到。查看跟踪文件时,无法加载/保存任何 cobertura 信息。这让我相信关闭挂钩永远不会被执行,否则我会得到结果。

感谢您的帮助!