2024-09-28 05:28:20 发布
网友
b.py公司
import subprocess f = subprocess.Popen(['python', 'a.py']) time.sleep(3000)
a.py公司
import time time.sleep(1000)
运行pythonb.py,按CTRL+C,两个进程都将终止。你知道吗
但是,将信号SIGINT发送到父进程b.py,kill-2 xxxx,但子进程a.py仍然存在。你知道吗
终端上的Ctrl-C通常将SIGINT发送到前台进程组中的所有进程。父进程和子进程都在此进程组中。你知道吗
Ctrl-C
SIGINT
有关更详细的解释,请参见示例The TTY demystified或Kirk McKusick在Process Groups and Sessions上的更技术的版本
如果您只是终止父进程,则子进程是无父进程,因此将被重新租入PID 1(init)。您也可以在ps的输出中看到这一点。因为您的子进程从未收到信号,所以它只是继续运行。你知道吗
ps
终端上的
Ctrl-C
通常将SIGINT
发送到前台进程组中的所有进程。父进程和子进程都在此进程组中。你知道吗有关更详细的解释,请参见示例The TTY demystified或Kirk McKusick在Process Groups and Sessions上的更技术的版本
如果您只是终止父进程,则子进程是无父进程,因此将被重新租入PID 1(init)。您也可以在
ps
的输出中看到这一点。因为您的子进程从未收到信号,所以它只是继续运行。你知道吗相关问题 更多 >
编程相关推荐