16

如何从 JVM 中发送 POSIX 信号?(在 Java 或 Clojure 中)

在我尝试谷歌搜索之前,我从没想过这会是一个问题——有很多关于处理信号的信息,但没有关于发送它们的信息。

除了使用 JNI 或调用 shell 执行“kill”之外,还有其他方法可以向 PID 发送信号吗?

4

2 回答 2

9

好的。回答自己:我查看了建议的库,但我对引入大量代码的新依赖关系持谨慎态度,尤其是如果我只使用其中的一小部分。

事实证明,最简单的方法是使用 JNA 并与系统 (libc) API 交互。在 clojure 中,这几乎相当于:

(jna-invoke Integer kill pid signo)

当然,在做了 (:use net.n01se.clojure-jna) 之后。

由于这个软件不打算在 Windows 上运行,我对这个应该适用于所有 POSIX 系统的解决方案很好(MacOS 和 Linux 是我感兴趣的)。

于 2010-06-30T10:53:21.210 回答
5

POSIX 信号是特定于操作系统的功能,但 JVM 试图成为独立于操作系统的 VM。所以没有标准的功能。

但是您可以执行 shell 命令(使用Runtime类)或使用一些库来满足您的需要,例如用于 Java 的 Posix

于 2010-06-30T09:56:50.007 回答