Захват сигнала уничтожения в приложении Eclipse RCP

У меня есть версия командной строки приложения Eclipse RCP GUI, которое может использовать множество одних и тех же плагинов (это удобно для интеграционного тестирования). Одна вещь, которую он делает, это подключается к серверу, запрашивает материал и запускает интерактивный цикл. Чтобы выйти, пользователь приложения с графическим интерфейсом может остановить цикл и закрыть приложение.

В моем приложении командной строки наиболее очевидным способом «закрыть» приложение является CTRL-C! Однако это оставляет «сессионную грязь» на сервере, которую можно очистить, если я смогу перехватить сигнал выхода. Грязь в конечном итоге истечет или что-то в этом роде, но было бы неплохо, если бы я тоже мог разобраться с этим чисто.

Итак, каковы мои варианты захвата сигнала уничтожения из приложения Eclipse RCP? Это специфично для Linux, если это поможет. Но я не загружаю плагины SWT. Мой «основной цикл» Plugin.stop() не вызывается, когда я нажимаю ctrl-c в командной строке. Что-то вроде KeyboardInterrupt в Python было бы превосходно!


person richq    schedule 13.03.2009    source источник


Ответы (2)


Я нашел альтернативный подход - добавить хук выключения, который запускается, когда приходит конец...

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

Посмотрите на встроенную функцию bash trap. Сигналом для CTRL-C является SIGINT, но вы можете также перехватывать SIGTERM и SIGHUP.

person cadrian    schedule 13.03.2009