gpt4 book ai didi

python - 将信号处理委托(delegate)给 python 中的子进程

转载 作者:太空狗 更新时间:2023-10-30 01:34:04 25 4
gpt4 key购买 nike

如何从 python 脚本运行命令并向其委托(delegate)信号,如 Ctrl+C

我的意思是当我运行时,例如:

from subprocess import call
call(["child_proc"])

我想要child_proc来处理Ctrl+C

最佳答案

我猜您的问题是您希望子进程接收 Ctrl-C 而不是让父 Python 进程终止?如果您的子进程为 Ctrl-C (SIGINT) 初始化它自己的信号处理程序,那么这可能会成功:

import signal, subprocess

old_action = signal.signal(signal.SIGINT, signal.SIG_IGN)
subprocess.call(['less', '/etc/passwd'])
signal.signal(signal.SIGINT, old_action) # restore original signal handler

现在您可以按 Ctrl-C(它会生成 SIGINT),Python 会忽略它,但 less 仍会看到它。

但是这仅在子级正确设置其信号处理程序时才有效(否则这些信号处理程序是从父级继承的)。

关于python - 将信号处理委托(delegate)给 python 中的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24936107/

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