在命令列介面 (CLI) 應用程式中,捕獲 Ctrl C 的價值非常高。此組合鍵通常會終止進程,但可以重新導向以執行自訂操作。跨平台一致地實現此功能是一項挑戰。
對於Unix 和 Solaris,您可以利用 sun.misc 套件中的 SignalHandler 類別。此類別可以攔截 Ctrl C 產生的 SIGINT 訊號。
import sun.misc.Signal; import sun.misc.SignalHandler; class CtrlCHandler implements SignalHandler { public void handle(Signal signal) { // Your custom Ctrl+C handling logic } } Signal.handle(new Signal("INT"), new CtrlCHandler());
對於 Windows,可以使用 Runtime 類別和關閉掛鉤採用類似的方法。
Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { // Your custom Ctrl+C handling logic } });
但是,這種技術只允許在 JVM 關閉之前進行中間攔截。
不要使用上述方法,請考慮使用不同的方法來讀取字元來自標準輸入,例如 System.in.read()。這種方法提供了對輸入處理的直接控制,包括攔截 Ctrl C 的能力。
以上是如何跨平台攔截Java CLI應用程式中的Ctrl C?的詳細內容。更多資訊請關注PHP中文網其他相關文章!