信号处理用“术语”(Signal handling using “TERM”)

2019-07-17 16:48发布

我有,我有提示与确认对话框,用户可以节省他所做的更改,当他试图通过关闭系统的独立应用程序start-->shutdown

我才知道,通过使用signalhandlers我们可以做到这一点。
可有一个人帮助我如何使用信号处理程序

Answer 1:

更新2012年5月(2年半后)

Trejkaz评论:

关于Java的当前版本,因为“这个信号处理代码失败INT ”信号“由VM或OS保留”。
此外,没有其他的有效信号名称的东西时,要求关闭应用程序实际上火(我只是苦心测试了所有的人的,我可以了解......)
关闭挂接大部分工作,但我们发现,在我们的情况下,它不点火,所以下一步显然是诉诸注册JVM的背后处理程序

该章“ 积分信号和异常处理中”的“ 故障排除指南HotSpot虚拟机 ”中提到的信号“ SIGTERMSIGINTSIGHUP只适用于Solaris OS和Linux”。
仅在Windows异常处理被提及。


原来的答案(2009年9月)

一个ShutdownHook应该能够处理这种情况

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
    public void run() {
        // what you want to do
    }
}));

(带警告 )
也可以看看:

  • Java的信号处理和终止 (链接是死的,看归档或镜 )
  • java的退出信号处理 :

作为简单的信号处理的示图:

public class Aaarggh {
  public static void main(String[] args) throws Exception {
    Signal.handle(new Signal("INT"), new SignalHandler () {
      public void handle(Signal sig) {
        System.out.println(
          "Aaarggh, a user is trying to interrupt me!!");
        System.out.println(
          "(throw garlic at user, say `shoo, go away')");
      }
    });
    for(int i=0; i<100; i++) {
      Thread.sleep(1000);
      System.out.print('.');
    }
  }
}


文章来源: Signal handling using “TERM”
标签: java signals