os.waitpid上的“没有子进程”

时间:2011-07-08 06:29:00

标签: python unix ubuntu

我正在尝试使用os.systemPopen在Ubuntu上模拟waitpid的行为,而我正在

OSError: [Errno 10] No child processes

这是我如何使用它

p = Popen(args, stdout = PIPE, stderr = PIPE)
stdout, stderr = p.communicate()
returncode = os.waitpid(p.pid, 0)[1]

我试图从[{1}}中获取返回代码,但它始终是p.returncode,任何想法如何获取返回代码?

2 个答案:

答案 0 :(得分:6)

communicate已经等待子进程终止,并收集返回代码本身。因此,当您调用os.waitpid时,您将调用它来引用已从OS表中删除的进程ID。因此,您会收到“无子进程”错误。

communicate返回后,您要查找的返回代码将存储在流程对象的returncode字段中。

答案 1 :(得分:3)

使用p.poll()p.wait()