子进程对 SIGINT 信号的反应不同
Subprocess reacts differently on SIGINT signals
b.py
import subprocess
f = subprocess.Popen(['python', 'a.py'])
time.sleep(3000)
a.py
import time
time.sleep(1000)
运行 python b.py,按CTRL+C,两个进程都会终止。
然而向父进程b.py发送SIGINT信号,kill -2 xxxx,但子进程a.py仍然存在
Ctrl-C
在您的终端通常发送 SIGINT
到 前台进程组 中的所有进程。你的父进程和你的子进程都在这个进程组中。
更详细的解释见例子The TTY demystified or the more technical version by Kirk McKusick at Process Groups and Sessions
如果您只是终止父进程,则子进程将 无父进程,因此重新成为 PID 1(init)的父进程。您也可以在 ps
的输出中看到这一点。由于您的子进程永远不会收到信号,因此它会继续 运行.
b.py
import subprocess
f = subprocess.Popen(['python', 'a.py'])
time.sleep(3000)
a.py
import time
time.sleep(1000)
运行 python b.py,按CTRL+C,两个进程都会终止。
然而向父进程b.py发送SIGINT信号,kill -2 xxxx,但子进程a.py仍然存在
Ctrl-C
在您的终端通常发送 SIGINT
到 前台进程组 中的所有进程。你的父进程和你的子进程都在这个进程组中。
更详细的解释见例子The TTY demystified or the more technical version by Kirk McKusick at Process Groups and Sessions
如果您只是终止父进程,则子进程将 无父进程,因此重新成为 PID 1(init)的父进程。您也可以在 ps
的输出中看到这一点。由于您的子进程永远不会收到信号,因此它会继续 运行.