从JVM发送POSIX信号

时间:2010-06-30 09:02:40

标签: java clojure jvm jvm-languages

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

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

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

2 个答案:

答案 0 :(得分:9)

确定。回答我自己:我查看了建议的库,但我很担心在很多代码上引入新的依赖关系,特别是如果我只使用它的一小部分。

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

(jna-invoke Integer kill pid signo)

当然做了一个(:使用net.n01se.clojure-jna)。

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

答案 1 :(得分:5)

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

但你可以执行shell命令(使用Runtime类)或使用一些lbrary来满足你的需求,比如Posix for Java