提交 4daffd84 authored 作者: medakk's avatar medakk

Close os.devnull if opened

上级 8f0b0888
...@@ -43,7 +43,7 @@ def subprocess_Popen(command, **params): ...@@ -43,7 +43,7 @@ def subprocess_Popen(command, **params):
proc = subprocess.Popen(command, startupinfo=startupinfo, **params) proc = subprocess.Popen(command, startupinfo=startupinfo, **params)
finally: finally:
if stdin is not None: if stdin is not None:
del stdin stdin.close()
return proc return proc
...@@ -72,15 +72,10 @@ def output_subprocess_Popen(command, **params): ...@@ -72,15 +72,10 @@ def output_subprocess_Popen(command, **params):
""" """
if 'stdout' in params or 'stderr' in params: if 'stdout' in params or 'stderr' in params:
raise TypeError("don't use stderr or stdout with output_subprocess_Popen") raise TypeError("don't use stderr or stdout with output_subprocess_Popen")
# stdin to devnull is a workaround for a crash in a weird Windows
# environement where sys.stdin was None
if not hasattr(params, 'stdin'):
null = open(os.devnull, 'wb')
params['stdin'] = null
params['stdout'] = subprocess.PIPE params['stdout'] = subprocess.PIPE
params['stderr'] = subprocess.PIPE params['stderr'] = subprocess.PIPE
p = subprocess_Popen(command, **params) p = subprocess_Popen(command, **params)
# we need to use communicate to make sure we don't deadlock around # we need to use communicate to make sure we don't deadlock around
# the stdour/stderr pipe. # the stdout/stderr pipe.
out = p.communicate() out = p.communicate()
return out + (p.returncode,) return out + (p.returncode,)
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论