在我的 Java 应用程序中,我想捕获 SIGINT,进行一些预处理,然后让默认行为(进程终止)运行。我想我可以做这样的事情:
Signal.handle(new Signal("INT"), new SignalHandler() {
@Override
public void handle(Signal signal) {
// preprocessing
// ...
// now do default behavior
SignalHandler.SIG_DFL.handle(signal);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我发送SIGINT到此应用程序时,我收到SEGV:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000000000000000, pid=10261, tid=21507
#
# JRE version: Java(TM) SE Runtime Environment (8.0_51-b16) (build 1.8.0_51-b16)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.51-b03 mixed mode bsd-amd64 compressed oops)
# Problematic …Run Code Online (Sandbox Code Playgroud)