8

我有一个 java 程序,它创建一个锁定文件以确保没有其他执行与它同时运行。如果程序运行,它会创建文件,并在退出时(成功或通过异常)删除文件。但是,如果用户按 Ctrl+C、关闭终端或以其他方式中断执行,则不会删除该文件。有没有办法检测到这个中断命令并确保在这种情况下文件也被删除?

4

2 回答 2

5

您可能想查看关闭挂钩

此外,这可能是一两天前这个先前 SO 问题的重复或几乎重复:

如何在 CLI 应用程序中“拦截”Ctrl+C?

于 2009-08-04T20:32:34.323 回答
2

处理这个问题的唯一好方法是给你的日志文件加上时间戳,并每隔几秒用一个新的时间戳更新日志文件。File.deleteOnExit 会有所帮助,但没有一种方法是万无一失的(当有人拉电源线时会发生什么?)。

如果你写了一个时间戳,那么你可以检查一个有效的时间戳(最近写的),如果它已经过时了,就覆盖日志文件。这样,陈旧的锁定文件就不会妨碍用户。

于 2009-08-04T20:54:07.523 回答