Подтвердить что ты не робот

Как обращаться с SIGTERM

Есть ли способ в Java обрабатывать полученный SIGTERM?

4b9b3361

Ответ 1

Да, вы можете зарегистрировать крюк выключения с помощью Runtime.addShutdownHook().

Ответ 2

Вы можете добавить shutdown hook для любой очистки.

Вот так:

public class myjava{
    public static void main(String[] args){
        Runtime.getRuntime().addShutdownHook(new Thread() {
        @Override
            public void run() {
                System.out.println("Inside Add Shutdown Hook");
            }   
        }); 

        System.out.println("Shut Down Hook Attached.");

        System.out.println(5/0);     //Operating system sends SIGFPE to the JVM
                                     //the JVM catches it and constructs a 
                                     //ArithmeticException class, and since you 
                                     //don't catch this with a try/catch, dumps
                                     //it to screen and terminates.  The shutdown
                                     //hook is triggered, doing final cleanup.
    }   
}

Затем запустите его:

[email protected]:~$ javac myjava.java
[email protected]:~$ java myjava 
Shut Down Hook Attached.
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at myjava.main(myjava.java:11)
Inside Add Shutdown Hook

Ответ 3

Еще один способ обработки сигналов на Java - через пакет sun.misc.signal. Обратитесь к http://www.ibm.com/developerworks/java/library/i-signalhandling/, чтобы понять, как его использовать.

ПРИМЕЧАНИЕ.. Функциональность, входящая в состав sun. *, также означает, что она не может быть переносимой/вести себя одинаковой для всех ОС. Но вы можете попробовать.