在Python3文档中,它在https://docs.python.org/3/library/subprocess.html#subprocess.Popen.communicate下面声明
等待进程终止。
这是否意味着Popen.communicate()也调用了Popen.wait(),这样我就可以通过在p2.returncode之前不写p2.wait()来走捷径了:
p0 = subprocess.Popen(["/usr/bin/svn", "info"], stdout=subprocess.PIPE)
p1 = subprocess.Popen(["/bin/grep", "Revision:"], stdin=p0.stdout, stdout=subprocess.PIPE)
p2 = subprocess.Popen(["/bin/sed", r"s/Revision: //g"], stdin=p1.stdout, stdout=subprocess.PIPE,universal_newlines=True)
stdout, stderr = p2.communicate()# implicitly calls p2.wait() to wait for exit code?
info_struct.exitcode = p2.returncode而不是
p0 = subprocess.Popen(["/usr/bin/svn", "info"], stdout=subprocess.PIPE)
p1 = subprocess.Popen(["/bin/grep", "Revision:"], stdin=p0.stdout, stdout=subprocess.PIPE)
p2 = subprocess.Popen(["/bin/sed", r"s/Revision: //g"], stdin=p1.stdout, stdout=subprocess.PIPE,universal_newlines=True)
stdout, stderr = p2.communicate()# implicitly calls p2.wait() to wait for exit code?
p2.wait()# explicit wait for exit code call
info_struct.exitcode = p2.returncode发布于 2017-06-09 11:49:05
是的,确实如此。请参阅源代码 (Python3.6.1版本链接):
sts = self.wait(timeout=self._remaining_time(endtime))您不必亲自调用p2.wait(),该进程已在此点结束。
https://stackoverflow.com/questions/44456996
复制相似问题