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()
.