代码之家  ›  专栏  ›  技术社区  ›  richq luc

在EclipseRCP应用程序中捕获终止信号

  •  1
  • richq luc  · 技术社区  · 16 年前

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

    在我的命令行应用程序中,最明显的“关闭”应用程序的方法是ctrl-c!但是,这会在服务器上留下“会话crud”,如果我能够捕获退出信号,就可以清除它。积垢最终会消失,但如果我也能把它清理干净,那就太好了。

    那么,对于从EclipseRCP应用程序捕获终止信号,我有什么选择呢?这是特定于Linux的,如果有帮助的话。但我没有加载任何SWT插件。当我控制命令行时,不会调用“main loop”plugin.stop()。类似于python的keyboardinterrupt的东西就是ace!

    2 回复  |  直到 16 年前
        1
  •  3
  •   richq luc    16 年前

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

        Runtime.getRuntime().addShutdownHook(new Thread() {
            public void run() {
                System.out.println("The end.");
            }
        });
    
        2
  •  1
  •   cadrian    16 年前

    看看巴什的 trap 建筑。ctrl-c的信号是sigint,但您可能还需要陷阱sigterm和sighup。