过程控制 - 如何等待子过程完成?

时间:2017-07-19 12:57:17

标签: python python-3.x

使用C fork(),父进程可以waitpid(childPid, &returnStatus, 0);让子进程退出。

在python中,

completed = subprocess.run(['ls', '-1'])

CompletedProcess实例不会控制父进程等待子进程。子进程可以比正常运行更多的时间。

如何等待子进程完成?如何在没有pid的情况下中止/终止子进程失败?

2 个答案:

答案 0 :(得分:1)

使用此:

p = subprocess.Popen(['ls', '-1'])
p.wait()

要查看子流程是否已完成,请查看p.poll()。如果是None,则该过程仍在运行。如果是数字,那就是流程的退出代码。

答案 1 :(得分:0)

只有父处理器可以使用wait(),子处理器不能。但是子处理器可以使用 pause() 来等待信号到来。