忽略Java中的SIGINT

Tri*_*tan 2 java posix

我在Unix(JRI)上使用Java包装器来创建本机共享库.本机库(R的基于C的REPL实现)在内部处理SIGINT.使用Java包装器时,Java应用程序在使用以下方法将SIGINT发送到进程时退出:

kill -SIGINT pid

我更喜欢SIGINT内部完全由本机库处理.

有没有一种简单的方法可以让Java完全忽略SIGINT但仍然有本机库接收它?

加成:

这最好适用于Unix和OSX.

Wou*_*rts 8

它没有标准API,但如果您使用的是Sun JDK,则可以使用sun.misc.Signalsun.misc.SignalHandler.来自文档的示例:

SignalHandler handler = new SignalHandler () {
    public void handle(Signal sig) {
        ... // handle SIGINT
    }
};
Signal.handle(new Signal("INT"), handler);
Run Code Online (Sandbox Code Playgroud)