summaryrefslogtreecommitdiff
path: root/Lib/subprocess.py
diff options
context:
space:
mode:
authorTim Golden <mail@timgolden.me.uk>2013-11-03 12:53:17 +0000
committerTim Golden <mail@timgolden.me.uk>2013-11-03 12:53:17 +0000
commite004175c5694804c263f0f06e7a4e3bbc6852cc4 (patch)
treeac8643f53299b0b22873ee3ee07d03651b38e8c0 /Lib/subprocess.py
parent0bdcdecca7736151278097784720be08cbdc221c (diff)
downloadcpython-git-e004175c5694804c263f0f06e7a4e3bbc6852cc4.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 376b50546b..aec39d4947 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -681,21 +681,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.