从Java 9向进程发送信号

6
我听说在Java 9中,他们对进程API进行了大量更新。现在有没有更简洁的方法来向Java生成的Process发送信号?这些信号用作触发进程中动作的简单方式。
以前,我不得不使用反射获取pid,然后使用Runtime#exec发送kill命令。我认为您仍然需要使用Runtime#exec,因为信号可能与操作系统相关,但我想知道是否有比这更好的方法!
Process p = Runtime.getRuntime().exec(...);
...
Runtime.getRuntime().exec("kill -SIGUSR1 " + p.getPid());

3
您可以查看文档:http://download.java.net/java/jdk9/docs/api/java/lang/Process.html。我能看到的唯一明显的是`destroy`和`destroyForcibly`,但在Java 8中已经存在了。 - Jorn Vernee
@JornVernee 是的,我也是从那里看到 getPid 的。只是想知道我有没有漏掉什么! - flakes
可能是如何从Java向外部进程发送SIGINT信号?的重复问题。 - Whymarrh
1
不幸的是,由于Windows没有信号,这并不是Java可以跨平台公开的内容,所以您最好使用类似jnr-posix这样的东西,尽管它在Windows上无法工作。 [1] - Whymarrh
1个回答

3

信号可能与操作系统相关

是的,Windows没有像POSIX操作系统那样具有信号的概念。

但我很好奇是否有比这更好的方法!

jnr-posix提供了对libc的薄包装,包括kill函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接