values operating name know how java clojure jvm jvm-languages

java - operating - Enviando una señal POSIX desde la JVM



know os java (2)

¿Cómo envío una señal POSIX desde la JVM? (en Java o Clojure)

Nunca pensé que esto sería un problema hasta que intenté buscarlo en Google: hay mucha información sobre el manejo de las señales, pero nada sobre cómo enviarlas.

Aparte de usar el JNI o ​​llamar al shell para ejecutar "kill", ¿hay alguna otra forma de enviar una señal a un PID?


De acuerdo. Respondiéndome: miré las bibliotecas sugeridas, pero desconfío de introducir nuevas dependencias en muchos códigos, especialmente si solo usaré una pequeña parte de ellos.

Resulta que la forma más sencilla es usar JNA e interactuar con la API del sistema (libc). En clojure esto equivale a:

(jna-invoke Integer kill pid signo)

después de hacer un (: use net.n01se.clojure-jna) por supuesto.

Como este software no está diseñado para ejecutarse en Windows, estoy bien con esta solución que debería funcionar en todos los sistemas POSIX (MacOS y Linux son lo que me interesa).


Las señales POSIX son funciones específicas del sistema operativo, pero se intenta que JVM sea una máquina virtual independiente del sistema operativo. Así que no hay funciones estándar para esto.

Pero puede ejecutar comandos de shell (usando la clase Runtime ) o usar un poco de biblioteca para sus necesidades, como un Posix para Java