在Eclipse RCP应用程序中捕获kill信号

时间:2009-03-13 08:55:30

标签: java linux command-line eclipse-rcp signals

我有一个Eclipse RCP GUI应用程序的命令行版本,它可以使用许多相同的插件(这对于集成测试很方便)。它做的一件事是连接到服务器,请求东西并启动交互式循环。要退出,GUI应用程序的用户可以停止循环并关闭应用程序。

在我的命令行应用程序中,“关闭”应用程序最明显的方法是CTRL-C!但是,如果我可以捕获退出信号,这会在服务器上留下“session crud”。 crud最终会超时或者其他什么,但如果我能干净利落的话,那就太好了。

那么,我从Eclipse RCP应用程序中捕获kill信号的选择是什么?这是特定于Linux的,如果有帮助的话。但是我没有加载任何SWT插件。当我按命令行ctrl-c时,不会调用我的“主循环”Plugin.stop()。像Python的KeyboardInterrupt这样的东西就是王牌!

2 个答案:

答案 0 :(得分:3)

我找到了另一种方法 - 添加一个在结束时运行的关闭钩子......

    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
            System.out.println("The end.");
        }
    });

答案 1 :(得分:1)

看看bash的trap内置版。 CTRL-C的信号是SIGINT,但您可能还想捕获SIGTERM和SIGHUP。