gpt4 book ai didi

python - 子进程中未收到 Popen send_signal 信号

转载 作者:行者123 更新时间:2023-11-28 17:46:06 25 4
gpt4 key购买 nike

我正在使用 subprocess.Popen 运行多个进程,当我检测到一组文件中的任何一个发生变化时,我想向其中一个进程发送信号。我在这个过程中定义了一个信号处理程序,但它似乎没有被发送任何信号。一些帮助将不胜感激。发送信号的函数和信号处理程序如下所示。

def start_up():
p, i = None, None
while 1:
subprocess.call(['clear'])
logging.info('starting overlay on host %s' % socket.gethostname())
p = subprocess.Popen([sys.executable, 'sdp_proc.py'])
i = subprocess.Popen([sys.executable, 'kernel.py', sys.argv[1],
sys.argv[2]])
if file_modified():
p.terminate()
i.send_signal(signal.SIGINT)
time.sleep(1)

信号处理程序如下所示:

def signal_handler(signum, frame):
with open('log.txt', 'w') as f:
f.write(' so what mate, received signal with signal number %s' % signum)


signal.signal(signal.SIGINT, signal_handler)

最佳答案

我猜 SIGINT 甚至在它有机会加载所有 Python 之前就被发送到子进程,所以在它安装 SIGINT 处理程序之前,这意味着它会立即死亡。

在向子进程发送您希望由您自己的处理程序代码处理的任何 SIGINT 信号之前,您可能希望观察子进程是否满足某些成功加载条件(可能只是在管道上发送一个字节)。

关于python - 子进程中未收到 Popen send_signal 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17841425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com