CLI Java アプリケーションでの Ctrl C 割り込みのキャプチャ
CLI Java アプリケーションでは、Ctrl C 信号のインターセプト (通常はプロセスの終了) が可能です。ユーザー入力を適切に処理するために重要です。この記事では、複数のプラットフォーム間でこのインターセプトを実現する方法について説明します。
マルチプラットフォーム ソリューション
Linux、Solaris、Windows 間で Ctrl C 信号を一貫してインターセプトするには、推奨されるアプローチは SignalHandler を使用します。 sun.misc.SignalHandler クラスはこの機能を提供します。 SignalHandler#handle を実装し、SIGINT シグナルに登録することで、割り込みをキャプチャしてカスタム コードを実行できます。
実装
使用方法の例は次のとおりです。 Java の SignalHandler:
<code class="java">import sun.misc.Signal; import sun.misc.SignalHandler; public class CtrlCHandler { public static void main(String[] args) { // Register a SignalHandler for SIGINT (Ctrl+C) Signal.handle(new Signal("INT"), new SignalHandler() { @Override public void handle(Signal signal) { // Custom shutdown code here System.out.println("Ctrl+C received, performing shutdown..."); Runtime.getRuntime().exit(0); } }); // Other application logic here... } }</code>
このメソッドは、JVM が完全にシャットダウンする前の中間ステップとしてのみシグナルをインターセプトするため、すべてのユースケースに適しているわけではないことに注意してください。
代わりに:
SignalHandler の使用が不可能な場合は、Runtime.getRuntime().addShutdownHook メソッドの使用を検討してください。これにより、JVM のシャットダウン時に実行されるスレッドを登録できます。このスレッド内で、Ctrl C 割り込みを処理し、必要なクリーンアップまたはシャットダウン手順を実行できます。
<code class="java">Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { // Custom shutdown code here System.out.println("JVM shutting down..."); } });</code>
これらのメソッドは、CLI Java アプリケーションで Ctrl C 信号をインターセプトするための柔軟なソリューションを提供し、ユーザー入力を処理できるようにします。プロセスが終了する前に、カスタム アクションを適切に実行します。
以上がCLI Java アプリケーションで Ctrl C 割り込みを適切に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。