我正在尝试在 Ubuntu 上使用 Popen
和 waitpid
模拟 os.system
的行为,我得到了
OSError: [Errno 10] No child processes
我是这样用的
p = Popen(args, stdout = PIPE, stderr = PIPE)
stdout, stderr = p.communicate()
returncode = os.waitpid(p.pid, 0)[1]
我试图从 p.returncode
中获取返回码,但它始终是 None
,关于如何获取返回码有什么想法吗?
最佳答案
communicate
已经在等待子进程终止,并自己收集返回码。因此,当您调用 os.waitpid
时,您调用它时引用了一个已从 OS 表中删除的进程 ID。因此,您会收到“无子进程”错误。
您要查找的返回码将存储在 returncode 中communicate
返回后进程对象的字段。
关于python - "No child processes"on os.waitpid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620693/