忽略Java中的SIGINT

时间:2010-07-14 20:38:03

标签: java posix

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

kill -SIGINT pid

我更希望SIGINT内部完全由本地库处理。

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

增加:

最好这适用于Unix和OSX。

1 个答案:

答案 0 :(得分:7)

没有标准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);