una signal señales señal programar proceso manejo enviar alarma java process signals

java - señales - signal en linux c



¿Cómo enviar la señal SIGINT de Java a un proceso externo? (4)

¿Puede enviar kill -SIGINT <pid> al proceso (dado que conoce el ID del proceso):

Runtime.getRuntime().exec("kill -SIGINT 12345");

Por supuesto, eso haría que la solución dependiera de la plataforma ... Potencialmente, podrá utilizar esta herramienta, aunque se encuentre en "modo sandbox". Pero podría darte una idea:

http://commons.apache.org/sandbox/runtime/

Vea también esta pregunta relacionada aquí:

¿Cómo puedo matar un proceso de Linux en java con SIGKILL Process.destroy () hace SIGTERM?

Tengo una aplicación Java que crea un proceso externo y lee la salida estándar del proceso a través de un InputStream. Necesito poder matar el proceso cuando termine. ¿Hay alguna manera de enviar una señal SIGINT a este proceso? (como si presionara Ctrl + C desde la consola).

El proceso externo no es mi código y no puedo modificarlo.


Desafortunadamente, no hay una forma nativa de enviar una señal de arbirtray en Java.

Estoy de acuerdo con Lukas en el uso de Runtime.exec () o podrías usar algo como Posix para la biblioteca de Java .


Para otras personas que llegan aquí desde Google, si desea enviar la señal al Proceso actual (también conocido como JVM), puede usar el método sun.misc.Signal.raise() . Personalmente lo necesito debido a una biblioteca JNI que estoy usando.


¿Está ejecutando el programa externo como java.lang.Process ? Como la clase Process tiene un método destroy() .