diff options
author | Tim Golden <mail@timgolden.me.uk> | 2013-11-03 12:53:17 +0000 |
---|---|---|
committer | Tim Golden <mail@timgolden.me.uk> | 2013-11-03 12:53:17 +0000 |
commit | e004175c5694804c263f0f06e7a4e3bbc6852cc4 (patch) | |
tree | ac8643f53299b0b22873ee3ee07d03651b38e8c0 /Lib/subprocess.py | |
parent | 0bdcdecca7736151278097784720be08cbdc221c (diff) | |
download | cpython-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.py | 24 |
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. |