Python sigwait на SIGCHLD – не возвращается при завершении дочернего процессаPython

Программы на Python
Ответить
Anonymous
 Python sigwait на SIGCHLD – не возвращается при завершении дочернего процесса

Сообщение Anonymous »

Я пытаюсь подождать в Python, пока
  • не сработает какой-либо заданный сигнал (сам сигнал можно игнорировать)
  • дочерний процесс завершается
Есть функция os.sigwait, которая, кажется, подходит для этой цели, но я не могу заставить ее работать вернитесь при выходе из разветвленного дочернего процесса, вызвав os.sigwait({signal.SIGCHLD}) — это приводит к тупику.
Что я пробовал:
#!/usr/bin/env python3
import signal
import os
import time

if __name__ == '__main__':
pid = None # initial value

try:
pid = os.fork() # method is available only on UNIX platforms

if pid != 0: # parent
# Wait for child exit or SIGINT
# (should also work for signals other than SIGINT)
signal.sigwait({signal.SIGCHLD, signal.SIGINT})
print("Got signal")
# never reaching this statement by child exit

else: # child
time.sleep(3)

finally:
if pid is None: # fork failed
pass
elif pid == 0:
print("\nChild cleaning up")
else:
print("\nParent cleaning up")


Подробнее здесь: https://stackoverflow.com/questions/793 ... ermination
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»