我有一个独立的应用程序,当用户尝试通过以下方式关闭系统时,我必须在其中提示用户确认对话框以保存他所做的更改 start-->shutdown.

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

有帮助吗?

解决方案

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

特雷卡兹 评论:

在当前版本的 Java 上,此信号处理代码会失败,因为“INT”信号“由VM或操作系统保留”。
此外,当某些内容请求应用程序关闭时,其他有效信号名称都不会真正触发(我只是煞费苦心地测试了我能找到的所有信号名称......)
关闭钩子大部分都能工作,但我们发现在我们的例子中它没有触发,所以下一步显然是在 JVM 背后注册一个处理程序

章节“集成信号和异常处理“ 的 ”HotSpot虚拟机故障排除指南“提到信号”SIGTERM, SIGINT, SIGHUP" 仅适用于 Solaris 操作系统和 Linux。
仅提及 Windows 上的异常处理。


原始答案(2009 年 9 月)

A 关闭钩子 应该能够处理那种情况

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

(和 注意事项)
也可以看看:

作为简单信号处理的说明:

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('.');
    }
  }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top