相关疑难解决方法(0)

如何触发默认信号处理行为?

在我的 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)

java unix signals

6
推荐指数
1
解决办法
1666
查看次数

标签 统计

java ×1

signals ×1

unix ×1