一尘不染

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

java

如何在CLI(命令行界面)Java应用程序中截获 Ctrl + C(通常会杀死进程)?

是否存在多平台解决方案(Linux,Solaris,Windows)?

我使用Console的是readLine(),但是如有必要,我可以使用其他方法从标准输入中读取字符。


阅读 416

收藏
2020-03-14

共1个答案

一尘不染

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { /*
       my shutdown code here
    */ }
 });

这应该能够截获信号,但是仅作为JVM完全关闭自身之前的中间步骤,因此它可能不是你要注意的。

你需要使用SignalHandler(sun.misc.SignalHandler)截获SIGINT由Ctrl+ 触发的信号C(在Unix和Windows上)。

2020-03-14