从 JVM 发送 POSIX 信号
2022-09-03 07:18:06
如何从 JVM 中发送 POSIX 信号?(在Java或Clojure中)
在我尝试谷歌搜索之前,我从未想过这会是一个问题 - 有很多关于处理信号的信息,但没有关于发送它们的信息。
除了使用JNI或调用shell执行“kill”之外,有没有其他方法可以向PID发送信号?
如何从 JVM 中发送 POSIX 信号?(在Java或Clojure中)
在我尝试谷歌搜索之前,我从未想过这会是一个问题 - 有很多关于处理信号的信息,但没有关于发送它们的信息。
除了使用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尝试成为独立于操作系统的VM。因此,没有标准功能。
但是你可以执行shell命令(使用运行时类)或使用一些lbrary来满足您的需求,比如Java的Posix。