Возможно ли для Eclipse мягко завершить работу вместо использования SIGKILL? - PullRequest
21 голосов
/ 24 марта 2009

Я использую Eclipse в Windows с плагином PyDev для разработки на Python. Когда я запускаю приложение «Выполнить», оно порождает новый экземпляр Python (CPython). Когда я использую кнопку «Завершить» (красный квадрат), это убивает процесс. Тем не менее, похоже, что это делает SIGKILL, поэтому мой обработчик выключения не может очистить.

Есть ли способ заставить Eclipse отправлять SIGTERM или имитировать прерывание клавиатуры (ctrl-c) из консоли Eclipse?

Примечание: я знаю, что есть другие IDE Python, такие как Komodo или Wing, которые могут решить эту проблему, но я не собираюсь переключаться на это.

Ответы [ 2 ]

10 голосов
/ 24 марта 2009

Eclipse использует Java Process API, который отправляет сигнал. Это нативный API, и изменить его невозможно. Я предполагаю, что вы пытались установить обработчик для SIGKILL, и это не сработало.

Следовательно, единственным решением будет написать небольшой пакетный файл, в котором перечислены процессы и отправлено SIGTERM одному из них. Вызовите это из командной строки. Если вы используете Alt-Tab для переключения на него, это почти так же удобно, как делать это из Eclipse.

Или напишите плагин для вызова командных файлов.

0 голосов
/ 28 марта 2019

Я посмотрел на Как Java-программа может получить свой собственный идентификатор процесса? и придумал это.

System.out.println("kill -SIGINT "+ProcessHandle.current().pid());

Я понимаю, что это не идеально, если вы не хотите распечатывать это для производства, но если вы просто создаете прототипы, это удобно. Или вы можете поместить его внутрь, если он работает, только если вы отлаживаете.

...