忽略Java中的SIGINT
我正在Unix()上为本机共享库使用Java包装器。本机库(R的基于C的REPL实现)在内部处理SIGINT。使用Java包装器时,当我使用以下命令向进程发送SIGINT时,Java应用程序将退出: kill-SIGINT-pid 我希望SIGINT完全由本机库内部处理 有没有一种简单的方法可以让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和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”的输出