当前位置: 首页 > 面试题库 >

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

壤驷雅达
2023-03-14
问题内容

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

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

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


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

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

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



 类似资料:
  • 问题内容: 我编写了一个SWT UI,它的主要功能是在StyledText控件中显示文本。我想为+ 添加一个处理程序,以便在按下该快捷方式时将焦点设置为搜索框。我尝试使用以下代码检测按键。 我期待在按+ 时看到以下输出: 但是,实际上,我实际上看到了以下内容。 我有两个问题: Display.addFilter(…)是添加全局快捷方式的最佳方法吗?我尝试了Display.addListener(…

  • 我想在我的Quarkus应用程序中添加一个HTTP拦截器,这样我就可以拦截所有HTTP请求。如何实现?

  • 问题内容: 我看到 一吨 的条目在我的Tomcat日志(样品粘贴下面)。这些在几个月前进行次要版本升级(Spring Security 4.2.4,IIRC)后开始出现在我的日志文件中,因此,这显然是默认情况下启用的Spring新安全功能。这里报告了类似的问题,但是我的问题专门涉及如何在控制器中拦截这些异常。有一个针对此问题的Spring Security错误记录(提供一种处理RequestRej

  • 我在Tomcat日志中看到大量条目(示例粘贴在下面)。在几个月前的一次小版本升级(Spring Security 4.2.4,IIRC)后,这些功能开始出现在我的日志文件中,因此这显然是Spring中默认启用的一个新的安全特性。这里报告了一个类似的问题,但我的问题具体涉及如何在控制器中拦截这些异常。这个问题有一个Spring Securitybug(提供一种处理RequestRejectedExc

  • 我使用的是使用Java机器人类截屏的标准方法,即: 这在大多数情况下都可以正常工作,但它只是在全屏应用程序中拍摄一个空白屏幕的照片(我使用的是Windows 7,所以大多数应用程序都使用Direct X全屏)。这是机器人类的已知问题还是我做错了什么?

  • 我能以某种方式截获来自应用程序的绝对所有流量吗?我应该做什么来做到这一点?提前谢谢你)