summaryrefslogtreecommitdiff
path: root/Lib/subprocess.py
diff options
context:
space:
mode:
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.