New submission from Guido van Rossum: A little birdie told me:
""" Bug in Python subprocess doesn't allow to detect if command executed through Windows system shell exists. If command doesn't exist, windows shell returns 9009 exit code (127 on Linux): ---[a.bat]--- @echo off nonex echo %ERRORLEVEL% > a.bat 'nonex' is not recognized as an internal or external command, operable program or batch file. 9009 However, when executed with Python, the return code is different on Python 2.7/3.3: ---[x.py]--- import subprocess p = subprocess.Popen("nonex", shell=True) print(p.wait()) > python x.py 'nonex' is not recognized as an internal or external command, operable program or batch file. 1 The same script executed on Linux gives correct result: # python x.py /bin/sh: non-existent: command not found 127 ---[a.sh]--- nonex echo $? """ There's some more research at http://goo.gl/xEg2b1 Seems the culprit is cmd.exe, which is executed by Python internally. It looks like it fails to return corresponding code 9009. Possibly all that needs to be done is documenting this wart, if we can't do anything about it? ---------- messages: 207251 nosy: ezio.melotti, gvanrossum priority: low severity: normal stage: needs patch status: open title: subprocess on Windows: wrong return code with shell=True type: behavior _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue20117> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com