問題: CLI Java アプリケーションで Ctrl C イベントを処理してプロセスの終了を防ぐ方法は?
コンテキスト: CLI アプリケーションにおける Ctrl C のデフォルトの動作はプロセスを終了することですが、特定のアプリケーションでは、この信号をインターセプトし、代わりに特定のアクションを実行する必要がある場合があります。
解決策:
マルチプラットフォーム CLI Java アプリケーションで Ctrl C をインターセプトするには、次のいずれかの方法を使用できます:
ランタイムシャットダウン フック:
Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { // Your shutdown code that handles Ctrl+C } });
このメソッドは、Ctrl C の結果として JVM がシャットダウンしたときにコードを実行します。ただし、シグナル処理を完全に制御できるわけではありません。
SignalHandler:
public class SignalHandler { public static void registerCtrlCHandler() { try { Signal.handle(new Signal("INT"), (s) -> { // Your Ctrl+C handling logic here }); } catch (Exception e) { // Handle exception } } }
sun.misc パッケージの SignalHandler を使用すると、Ctrl C によってトリガーされる SIGINT シグナルをインターセプトし、アプリケーション内でカスタム アクションを実行できます。 。これにより、信号処理をより詳細に制御できるようになります。
以上がCtrl C で Java CLI アプリケーションが終了しないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。