代码之家  ›  专栏  ›  技术社区  ›  dimo414

如何让Java处理系统中断,如CTRL+C

  •  7
  • dimo414  · 技术社区  · 16 年前

    我有一个Java程序,它创建一个锁文件,以确保没有其他的执行在同一时间运行。如果程序运行,它将创建文件,退出时,无论成功还是通过异常,文件都将被删除。但是,如果用户点击ctrl+c,关闭终端,或者以其他方式中断执行,则不会删除该文件。在这种情况下,是否有任何方法可以检测到该中断命令并确保文件也被删除?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Community Mohan Dere    8 年前

    你可能想调查一下 shutdown hooks .

    另外,这可能是前一个问题的一个或两个前一个问题的副本或近似副本:

    How can I "intercept" Ctrl+C in a CLI application?

        2
  •  2
  •   jsight TaherT    16 年前

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

    如果编写时间戳,则可以检查有效的时间戳(最近编写的),如果日志文件过期太严重,则可以覆盖该文件。这样,陈旧的锁文件就不会妨碍用户。