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

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 una 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.

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

¿Puede enviar kill -SIGINT al proceso (dado que conoce la ID del proceso):

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

Por supuesto, eso haría que la solución dependiera de la plataforma … Potencialmente, podrá usar esta herramienta, aunque esté en “modo de caja de arena”. 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?

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.

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

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