Есть ли способ в Java обрабатывать полученный SIGTERM?
Как обращаться с SIGTERM
Ответ 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. *, также означает, что она не может быть переносимой/вести себя одинаковой для всех ОС. Но вы можете попробовать.