如何在CLI應(yīng)用程序中“攔截”Ctrl + C?如何在CLI(命令行界面)Java應(yīng)用程序中攔截 Ctrl + C(通常會終止進(jìn)程)?是否存在多平臺解決方案(Linux,Solaris,Windows)?我使用Console的readLine(),但如果有必要,我會用一些其他的方法來讀取從標(biāo)準(zhǔn)輸入的字符。
3 回答

慕沐林林
TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊
Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { /* my shutdown code here */ } });
這應(yīng)該能夠攔截信號,但僅作為JVM完全關(guān)閉之前的中間步驟,因此它可能不是您正在尋找的。
您需要使用a SignalHandler
(sun.misc.SignalHandler
)來攔截SIGINT
由Ctrl+ C(在Unix和Windows上)觸發(fā)的信號。
請參閱此文章(pdf,第8頁和第9頁)。

慕標(biāo)琳琳
TA貢獻(xiàn)1830條經(jīng)驗 獲得超9個贊
我假設(shè)你想優(yōu)雅地關(guān)機(jī),而不是短路關(guān)機(jī)過程。如果我的假設(shè)是正確的,那么你應(yīng)該看看Shutdown Hooks。
添加回答
舉報
0/150
提交
取消