我有一个Eclipse RCP GUI应用程序的命令行版本,它可以使用许多相同的插件(这对于集成测试很方便)。它做的一件事是连接到服务器,请求东西并启动交互式循环。要退出,GUI应用程序的用户可以停止循环并关闭应用程序。
在我的命令行应用程序中,“关闭”应用程序最明显的方法是CTRL-C!但是,如果我可以捕获退出信号,这会在服务器上留下“session crud”。 crud最终会超时或者其他什么,但如果我能干净利落的话,那就太好了。
那么,我从Eclipse RCP应用程序中捕获kill信号的选择是什么?这是特定于Linux的,如果有帮助的话。但是我没有加载任何SWT插件。当我按命令行ctrl-c时,不会调用我的“主循环”Plugin.stop()。像Python的KeyboardInterrupt这样的东西就是王牌!
答案 0 :(得分:3)
我找到了另一种方法 - 添加一个在结束时运行的关闭钩子......
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("The end.");
}
});
答案 1 :(得分:1)
看看bash的trap
内置版。 CTRL-C的信号是SIGINT,但您可能还想捕获SIGTERM和SIGHUP。