ホームページ  >  記事  >  Java  >  複数のプラットフォームにわたる Java CLI アプリケーションで Ctrl C をインターセプトする方法

複数のプラットフォームにわたる Java CLI アプリケーションで Ctrl C をインターセプトする方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 02:00:28498ブラウズ

How to Intercept Ctrl C in Java CLI Applications Across Platforms?

CLI Java アプリケーションでの Ctrl C のインターセプト

コマンド ライン インターフェイス (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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。