gpt4 book ai didi

java - 在 Java 中捕获 Ctrl+C

转载 作者:IT老高 更新时间:2023-10-28 13:51:13 33 4
gpt4 key购买 nike

是否可以在 java 命令行应用程序中捕获 Ctrl+C 信号?我想在终止程序之前清理一些资源。

最佳答案

您可以附上 shutdown hook到 VM 关闭时运行的 VM:

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 Ctrl+C, or a system-wide event, such as user logoff or system shutdown.

不过,您作为关闭 Hook 传递的线程必须遵循几条规则,因此请仔细阅读链接文档以避免任何问题。这包括确保线程安全、线程快速终止等。

此外,正如评论者 Jesper 所指出的,关闭 Hook 可以保证在 VM 正常关闭时运行,但如果 VM 进程被强制终止,它们不会。如果 native 代码出错或您强行终止进程(kill -9taskkill/f),就会发生这种情况。

但在那些情况下,无论如何,所有的赌注都没有了,所以我不会在这上面浪费太多的心思。

关于java - 在 Java 中捕获 Ctrl+C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611931/

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