我该如何从JVM(使用Java或Clojure)发送一个POSIX信号?
我以前从未想过这会成为一个问题,直到我开始搜索它——有很多关于如何处理信号的信息,但却没有关于如何发送信号的内容。
除了使用JNI或调用shell执行“kill”之外,还有其他方法可以向PID发送信号吗?
我该如何从JVM(使用Java或Clojure)发送一个POSIX信号?
我以前从未想过这会成为一个问题,直到我开始搜索它——有很多关于如何处理信号的信息,但却没有关于如何发送信号的内容。
除了使用JNI或调用shell执行“kill”之外,还有其他方法可以向PID发送信号吗?
好的。 我自己回答:我看了建议的库,但是我担心引入大量代码的新依赖项,特别是如果我只使用其中的一小部分。
事实证明,最简单的方法是使用JNA并与系统(libc)API进行接口交互。 在clojure中,这几乎相当于:
(jna-invoke Integer kill pid signo)
当然,在执行(:use net.n01se.clojure-jna)后。
由于此软件不打算在Windows上运行,我对这个解决方案非常满意,它应该适用于所有POSIX系统(我感兴趣的是MacOS和Linux)。
POSIX信号是特定于操作系统的功能,但JVM试图成为独立于操作系统的虚拟机。因此,没有标准的函数可供使用。
但是您可以执行shell命令(使用 Runtime 类)或使用某些库来满足您的需求,例如Posix for Java
kill
也是可接受的。 - sleskeJava的Posix
文档,其中一些类如果使用不当可能会破坏您的JVM。 - Stephen C