2009-03-13 3 views
1

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

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

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

ответ

3

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

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

Посмотрите на bash's trap builtin. Сигналом для CTRL-C является SIGINT, но вы можете также захватить SIGTERM и SIGHUP.