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

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

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

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

我使用ConsolereadLine(),但如果有必要,我会用一些其他的方法来读取从标准输入的字符。


犯罪嫌疑人X
浏览 505回答 3
3回答

慕沐林林

Runtime.getRuntime().addShutdownHook(new Thread() {     public void run() { /*        my shutdown code here     */ }  });这应该能够拦截信号,但仅作为JVM完全关闭之前的中间步骤,因此它可能不是您正在寻找的。您需要使用a SignalHandler(sun.misc.SignalHandler)来拦截SIGINT由Ctrl+ C(在Unix和Windows上)触发的信号。请参阅此文章(pdf,第8页和第9页)。

慕标琳琳

我假设你想优雅地关机,而不是短路关机过程。如果我的假设是正确的,那么你应该看看Shutdown Hooks。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java