gpt4 book ai didi

java - 关机钩子(Hook)如何区分正常和突然(用户)关机

转载 作者:行者123 更新时间:2023-11-29 08:56:53 25 4
gpt4 key购买 nike

在我的应用程序中,我添加了一个关闭 Hook ,用于一些清理和完成最后的事务。正如所有文档所述,此 Hook 也会在“正常”关闭时调用 - 如果一切都已完成。

但我想给用户一些反馈:

"ctrl-c detected - trying to finish..."

我只想针对“突然”关闭提供此反馈。

那么有没有办法在shutdown hook中检测到是哪种关机呢?

最佳答案

正如我之前考虑的那样,Ctrl-C是正常的关机事件(如 Linux 中的 kill -15 <pid>)。因此,您的关闭 Hook 应该可以工作。

来自 javadoc(Runtime.addShutdownHook()):"

The Java virtual machine shuts down in response to two kinds of events:

The program exits normally, when the last non-daemon thread exits or when the exit (equivalently, System.exit) method is invoked, or

The virtual machine is terminated in response to a user interrupt, such as typing ^C, or a system-wide event, such as user logoff or system shutdown.

”。

但也有未捕获的关闭(如 Linux 中的 kill -9 <pid>),这种情况无法捕获和处理。进程 (JVM) 将在操作系统级别被终止,并且不会为应用程序生成任何信号。

关于java - 关机钩子(Hook)如何区分正常和突然(用户)关机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19904342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com