如何从 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 命令(使用Runtime类)或使用一些库来满足您的需要,例如用于 Java 的 Posix