В Windows я пытаюсь создать процесс python, ожидающий сигнал SIGINT. И когда он получает SIGINT, я хочу, чтобы он просто распечатывал сообщение и ждал другого появления SIGINT.So я использовал обработчик сигналов.Обработка сигналов в Windows
Это мой код signal_receiver.py.
import signal, os, time
def handler(signum, frame):
print 'Yes , Received', signum
signal.signal(signal.SIGINT, handler)
print 'My process Id' , os.getpid()
while True:
print 'Waiting for signal'
time.sleep(10)
Когда этот процесс работает, я просто отправить SIGINT к этому procees из другого процесса питона с помощью,
os.kill(pid,SIGINT)
.
Но когда signal_receiver.py получает SIGINT, он просто завершает выполнение. Но ожидаемое поведение заключается в том, чтобы напечатать сообщение внутри функции обработчика и продолжить выполнение.
Может кто-нибудь, пожалуйста, помогите мне решить эту проблему. Это ограничение в Windows, потому что то же самое отлично работает в Linux.
Заранее спасибо.
Windows не имеет сигналов. Python имитирует их для вас, но может не поддерживать это через процессы. Подумайте об использовании одного из родных методов IPC. –
[В соответствии с этим ответом] (http://stackoverflow.com/a/26053962/886887) Python не поддерживает сигналы перекрестного процесса. –