¿Hay alguna forma en Java para manejar un SIGTERM recibido?Cómo manejar un SIGTERM
Respuesta
Sí, puede registrar un gancho de cierre con Runtime.addShutdownHook()
.
Puede agregar shutdown hook para hacer cualquier limpieza.
De esta manera:
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.
}
}
luego ejecutarlo:
[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
Otra forma de manejar señales en Java es a través del paquete de sun.misc.signal. Consulte http://www.ibm.com/developerworks/java/library/i-signalhandling/ para saber cómo usarlo.
NOTA: La funcionalidad del paquete sun. * También significa que puede no ser portátil/comportarse igual en todos los sistemas operativos. Pero es posible que desee probarlo.
Pero, de hecho, ¿hace lo mismo? –
No, no exactamente. La API de manejo de señal que mencioné se puede usar para manejar la mayoría de las señales del sistema operativo nativo (trap, intr, kill, etc.) dentro de las aplicaciones Java. Por otro lado, ShutdownHook se invoca solo cuando JVM finalmente finaliza (después de que se recibe una señal de interrupción). – arcamax
@arcamax el enlace parece estar roto – GreenGiant
- 1. Amazon Elastic MapReduce - SIGTERM
- 2. tubo de fiesta y sigterm
- 3. ¿Cómo manejar adecuadamente y retener el apagado del sistema (y SIGTERM) para terminar su trabajo en Python?
- 4. ¿Cómo puedo manejar SIGINT en Erlang?
- 5. Win32 API analógica de envío/captura SIGTERM
- 6. Delgado no responde a SIGINT o SIGTERM
- 7. Pyramid cómo manejar un xhr.abort()
- 8. cómo puedo matar un proceso de Linux en java con SIGKILL Process.destroy() hace SIGTERM
- 9. Cómo manejar un evento ActiveX en Javascript
- 10. Cómo manejar KeyEvents en un DataGridViewCell?
- 11. ¿Cómo manejar un mapa con punteros?
- 12. ¿Cómo manejar un repositorio grande de git?
- 13. Cómo manejar EINTR (llamada de sistema interrumpida)
- 14. Diferencia entre SIGTER SIGTERM considerando el árbol de proceso
- 15. script de shell para generar procesos, finalizar hijos en SIGTERM
- 16. Manejar un bloqueo JNI
- 17. Cómo manejar MaxUploadSizeExceededException
- 18. Cómo manejar ERROR_RECOGNIZER_BUSY
- 19. Cómo manejar la ActivityNotFoundException?
- 20. cómo manejar esta ruta?
- 21. Cómo manejar múltiples delegados
- 22. Cómo manejar excepciones DOP
- 23. Cómo manejar AccessViolationException
- 24. ¿Cómo manejar adecuadamente ThreadInterruptedException?
- 25. cómo manejar httpStatuscode correctamente
- 26. Cómo obtener un HWND manejar fuera de un System.Windows.Forms.Form
- 27. cómo manejar un proyecto de php con un equipo?
- 28. Cómo manejar un bloqueo en un proceso iniciado mediante System.Diagnostics.Process?
- 29. ¿Cómo se prueba el manejo de señal en RSpec, particularmente el manejo de SIGTERM?
- 30. Cómo manejar enteros arbitrariamente grandes
La entrada del blog es 404 – luckydonald