如何从 python 脚本运行命令并将信号委托给它Ctrl+C
?
我的意思是当我运行例如:
from subprocess import call
call(["child_proc"])
我想child_proc
处理Ctrl+C
如何从 python 脚本运行命令并将信号委托给它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
仍会看到它。
但是,这仅在子级正确设置其信号处理程序时才有效(否则这些是从父级继承的)。