【发布时间】:2023-03-16 10:51:01
【问题描述】:
我有以下简化示例:
#!/usr/bin/python
import logging, logging.handlers
from multiprocessing import Process, Queue
import time, sys, signal
def child_proc(sleepr):
print 'Child: Started child, waiting'
time.sleep(sleepr)
print 'Child: Ended sleep, exiting'
def cleanup(a, b):
print 'Main: Got SIGTERM: ' + str(a) + ' : ' + str(b)
print 'Main: Starting process'
child_proc_th = Process(target=child_proc, args=(3,))
child_proc_th.start()
print 'Main: Pausing main thread'
signal.signal(signal.SIGTERM, cleanup)
signal.pause()
print 'Main: Running again after pause'
为什么在 child_proc 完成后 signal.pause 会恢复?我只希望它在收到 sigterm 时恢复... child_proc 是否将其退出信号向上发送到堆栈到父进程?还是有其他方法可以做到这一点...?
TIA
【问题讨论】: