Python, как обработать сигнал в Windows - PullRequest
0 голосов
/ 14 января 2020

Это специально для Windows, у меня нет этой проблемы на linux системах.

Итак, у меня есть программа, которая создает подпроцессы при ее запуске. Эти подпроцессы будут корректно завершаться, если программа завершится нормально или даже с исключениями или событием ctrl + c, используя try и KeyboardInterrupt и finally в if __name__ == '__main__':

Однако, если я убью программа в середине, я говорю о том, чтобы убить ее в PyCharm, используя кнопку STOP. Эти подпроцессы не будут завершены. Я не совсем уверен, какой сигнал посылает эта кнопка STOP на Windows.

Я попытался обработать сигнал, используя signal.signal(signal.SIGTERM, handler). Это не работает, я пытался SIGTERM, SIGINT, (SIGKILL, CTRL_C_EVENT, CTRL_BREAK_EVENT не работают в обработчике сигналов.). Ни один из них не работает. Я также прочитал этот пост: Как обрабатывать сигнал в python на windows машине

Как я могу грациозно выйти в этом сценарии? Эта кнопка STOP в сценарии PyCharm.

...