Процесс не отвечает на CTRL + Break - PullRequest
0 голосов
/ 03 февраля 2020

Я ожидал, что приведенный ниже пример сработает, но, хотя приложение заканчивает сообщать, что оно было прервано нажатием Ctrl + C, оно делает это только через 10 секунд и никогда не печатает сообщение. Что мне здесь не хватает? (Windows 10, Python 3.7)

from multiprocessing import Process
from time import sleep
from sys import exit
from os import kill
from signal import signal, SIGBREAK, CTRL_BREAK_EVENT


def before_exit(sig, frame):
    print('About to exit')
    exit(2)  # exit with error code


def worker():
    signal(SIGBREAK, before_exit)
    sleep(10)


def main():
    proc = Process(target=worker)
    proc.start()
    sleep(3)
    kill(proc.pid, CTRL_BREAK_EVENT)


if __name__ == '__main__':
    main()

Примечание: главная причина, по которой я пытаюсь это сделать, заключается в том, что я хочу иметь возможность запустить процесс, убить его и все же выполнить некоторую очистку код. На Linux SIGTERM выполнит эту работу, но на Windows, который недоступен, следовательно, это решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...