0

Java 1.8.0 を実行する Raspberry Pi と test.jar というファイルがあります。コードを実行して Ctrl+Z でプログラムを停止すると、シャットダウン フックは実行されませんが、Windows でコードを実行して停止すると、シャットダウン フックが機能します。

どうすればこれを修正できますか、ありがとう

public class Test
{
    public static void main(String[] args)
    {
        Runtime.getRuntime().addShutdownHook(new Thread()   //Add shutdown code
        {
            public void run()
            {
                System.out.println("Shutdown");
            }
        });

        while(true) { }
    }
}
4

1 に答える 1

1

Linux 端末では、ctrl-z は aSIGSTOPをフォアグラウンド プロセスに送信します。これは、プロセスで処理できない2 つのシグナル (もう 1 つは ) の 1 つSIGKILLです。これは、シグナルに応答して Java がコードを実行する方法がないことを意味します。

ただし、SIGSTOPとにかくプロセスを終了するのではなく、単に一時停止します。SIGCONTコマンドを使用してシェルで達成できるシグナルを送信することで、それを続行できますfg

ctrl-cプログラムを終了するために instead を使用してみてください。動作するはずです (SIGINT代わりに a を送信するため、これは処理できます)。

于 2014-09-20T17:28:02.287 に答える