1. ホーム
  2. java

[解決済み] CLIアプリケーションでCtrl+Cを「傍受」するには?

2023-05-03 03:31:36

質問

どうすれば インターセプト Ctrl + C (これは通常プロセスを殺すでしょう) をCLI(コマンドラインインターフェイス)Javaアプリケーションで実行できますか?

マルチプラットフォームソリューションは存在しますか (Linux、Solaris、Windows)?

私は Console 's readLine() というように,標準入力から文字を読み込むことができますが, 必要であれば他の方法で を使用して標準入力から文字を読み取ることができます。

どのように解決するのですか?

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { /*
       my shutdown code here
    */ }
 });

これは、シグナルをインターセプトすることができるはずですが、JVMがそれ自体を完全にシャットダウンする前の中間段階としてのみ行われるので、あなたが探しているものでないかもしれません。

を使用する必要があります。 SignalHandler ( sun.misc.SignalHandler ) を傍受するために SIGINT シグナルを傍受します。 Ctrl + C (Windowsだけでなく、Unixでも)。

参照 この記事 (pdf、8ページと9ページ)をご覧ください。