1

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

在我的命令行应用程序中,“关闭”应用程序最明显的方法是 CTRL-C!但是,如果我可以捕获退出信号,这会在服务器上留下可以清理的“会话垃圾”。杂物最终会超时或其他什么,但如果我也能把它清理干净就好了。

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

4

2 回答 2

3

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

    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
            System.out.println("The end.");
        }
    });
于 2009-03-13T09:09:22.140 回答
1

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

于 2009-03-13T09:01:36.823 回答