fork_child.py 中的代码
from subprocess import Popen
child = Popen(["ping", "google.com"], stdout=subprocess.PIPE,stderr=subprocess.PIPE)
out, err = child.communicate()
Run Code Online (Sandbox Code Playgroud)
我从终端窗口运行它作为 -
$python fork_child.py
Run Code Online (Sandbox Code Playgroud)
如果我从另一个终端窗口获取 fork_child.py 的 PID 并用 SIGTERM 杀死它,“ping”不会被杀死。当 fork_child 收到 SIGTERM 时,如何确保 ping 也被终止?
当父进程被杀死时,子进程不会自动死亡。他们会在以下情况下死亡:
该signals模块包含如何编写信号处理程序的示例。
所以你需要:
child.terminate()后跟child.wait()这wait()是允许操作系统垃圾收集子进程所必需的。如果你忘记了它,你最终可能会遇到僵尸进程。