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

最佳答案

您可以在虚拟机关闭时将shutdown hook附加到该虚拟机上,以使其运行:

但是,您作为关闭挂钩传递的线程必须遵循多个规则,因此请仔细阅读链接的文档,以避免出现任何问题。这包括确保线程安全,线程的快速终止等。
另外,正如评论者Jesper指出的那样,可以确保关闭挂钩在VM正常关闭时运行,但是如果VM进程被强行终止,则不会。如果 native 代码搞砸了,或者您强行终止了该进程(kill -9taskkill /f),则可能会发生这种情况。
但是在那种情况下,所有的赌注都没有,所以我不会在此浪费太多的思考。

10-02 00:55
查看更多