os.waitpid上的"没有子进程"

Yar*_*tov 2 python unix ubuntu

我试图模仿行为os.systemPopenwaitpidUbuntu上和我得到

OSError: [Errno 10] No child processes
Run Code Online (Sandbox Code Playgroud)

这是我如何使用它

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

我试图获取返回代码p.returncode,但它总是None,任何想法如何获得返回代码?

tyl*_*erl 6

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

您要查找的返回码将在返回后存储在过程对象的返回码字段中communicate.