【发布时间】:2017-06-09 11:47:17
【问题描述】:
在 Python 3 文档中,它在 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
【问题讨论】:
标签: python python-3.x subprocess