如何在JNI中将事件/信号从C发送到Java

Ani*_*ole 8 c java java-native-interface events signals

是否有任何机制通过JNI从C发送异步事件/信号到Java或反之?我需要捕获从C到Java的信号/事件.

biz*_*lop 1

这听起来有点棘手,因为 JNI 应该是单向的:Java 代码可以调用本机方法,该方法当然可以回调 Java 代码,但本身不能启动该过程。

但这也不是不可能,我认为最直接的解决方案是进行本地调用,直到收到信号为止。

另一种选择是编写 JVMTI 代理,它可以主动干扰正在运行的虚拟机。

但如果我们谈论的是 UNIX 信号,您可以使用非公共 API(因此不能保证将来和 Sun VM 特定)但现有的sun.misc.Signal类来处理。