summaryrefslogtreecommitdiff
path: root/Lib/subprocess.py
diff options
context:
space:
mode:
authorTim Golden <mail@timgolden.me.uk>2013-11-03 12:55:51 +0000
committerTim Golden <mail@timgolden.me.uk>2013-11-03 12:55:51 +0000
commitab7211f27847ab4e0090cc6bfb815bff4400c898 (patch)
tree4299768bf0f4e9f4c544bc9f49f6d01545eae941 /Lib/subprocess.py
parent7df4ddde15d654d557c3c0f8f1ee24a52e82f475 (diff)
parente004175c5694804c263f0f06e7a4e3bbc6852cc4 (diff)
downloadcpython-git-ab7211f27847ab4e0090cc6bfb815bff4400c898.tar.gz
Issue #10197 Rework subprocess.get[status]output to use subprocess functionality and thus to work on Windows. Patch by Nick Coghlan.
Diffstat (limited to 'Lib/subprocess.py')
-rw-r--r--Lib/subprocess.py24
1 files changed, 9 insertions, 15 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 23c9ea515b..1bfd136ec4 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -700,21 +700,15 @@ def getstatusoutput(cmd):
>>> subprocess.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
"""
- with os.popen('{ ' + cmd + '; } 2>&1', 'r') as pipe:
- try:
- text = pipe.read()
- sts = pipe.close()
- except:
- process = pipe._proc
- process.kill()
- process.wait()
- raise
- if sts is None:
- sts = 0
- if text[-1:] == '\n':
- text = text[:-1]
- return sts, text
-
+ try:
+ data = check_output(cmd, shell=True, universal_newlines=True, stderr=STDOUT)
+ status = 0
+ except CalledProcessError as ex:
+ data = ex.output
+ status = ex.returncode
+ if data[-1:] == '\n':
+ data = data[:-1]
+ return status, data
def getoutput(cmd):
"""Return output (stdout or stderr) of executing cmd in a shell.