如何从python脚本运行命令并委托给Ctrl+C
之类的信号?
我的意思是当我跑步时:
from subprocess import call
call(["child_proc"])
我希望child_proc
能够处理Ctrl+C
答案 0 :(得分:1)
我猜你的问题是你希望子进程接收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
仍会看到它。
但是这只有在孩子正确设置其信号处理程序时才有效(否则这些是从父母继承的)。