忽略Java中的SIGINT

忽略Java中的SIGINT,java,posix,Java,Posix,我正在Unix()上为本机共享库使用Java包装器。本机库(R的基于C的REPL实现)在内部处理SIGINT。使用Java包装器时,当我使用以下命令向进程发送SIGINT时,Java应用程序将退出: kill-SIGINT-pid 我希望SIGINT完全由本机库内部处理 有没有一种简单的方法可以让Java完全忽略SIGINT,但仍然让本机库接收它 添加: 这最好能在Unix和OSX上工作。没有标准的API,但如果您使用的是Sun JDK,则可以使用和。 文档中的示例: SignalHandler

我正在Unix()上为本机共享库使用Java包装器。本机库(R的基于C的REPL实现)在内部处理SIGINT。使用Java包装器时,当我使用以下命令向进程发送SIGINT时,Java应用程序将退出:

kill-SIGINT-pid

我希望SIGINT完全由本机库内部处理

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

添加:


这最好能在Unix和OSX上工作。

没有标准的API,但如果您使用的是Sun JDK,则可以使用和。 文档中的示例:

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

知道有什么方法可以让它在OSX上工作吗?我似乎没有访问sun.misc的权限。这应该可以在所有操作系统上正常工作,这不是问题所在。如果您没有这些,可能您正在使用不同的JDK?请参阅“java-version”的输出