diff options
author | Victor Stinner <vstinner@python.org> | 2020-04-01 16:49:29 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-01 16:49:29 (GMT) |
commit | 65a796e5272f61b42792d3a8c69686558c1872c5 (patch) | |
tree | 138d64a8dd04ab4d1cac2eb5c415aa10e0bbe00f /Lib/subprocess.py | |
parent | 5dd836030e0e399b21ab0865ae0d93934bdb3930 (diff) | |
download | cpython-65a796e5272f61b42792d3a8c69686558c1872c5.zip cpython-65a796e5272f61b42792d3a8c69686558c1872c5.tar.gz cpython-65a796e5272f61b42792d3a8c69686558c1872c5.tar.bz2 |
bpo-40094: Add os.waitstatus_to_exitcode() (GH-19201)
Add os.waitstatus_to_exitcode() function to convert a wait status to an
exitcode.
Suggest waitstatus_to_exitcode() usage in the documentation when
appropriate.
Use waitstatus_to_exitcode() in:
* multiprocessing, os, subprocess and _bootsubprocess modules;
* test.support.wait_process();
* setup.py: run_command();
* and many tests.
Diffstat (limited to 'Lib/subprocess.py')
-rw-r--r-- | Lib/subprocess.py | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py index c8db387..1eeccea 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1838,23 +1838,17 @@ class Popen(object): raise child_exception_type(err_msg) - def _handle_exitstatus(self, sts, _WIFSIGNALED=os.WIFSIGNALED, - _WTERMSIG=os.WTERMSIG, _WIFEXITED=os.WIFEXITED, - _WEXITSTATUS=os.WEXITSTATUS, _WIFSTOPPED=os.WIFSTOPPED, - _WSTOPSIG=os.WSTOPSIG): + def _handle_exitstatus(self, sts, + waitstatus_to_exitcode=os.waitstatus_to_exitcode, + _WIFSTOPPED=os.WIFSTOPPED, + _WSTOPSIG=os.WSTOPSIG): """All callers to this function MUST hold self._waitpid_lock.""" # This method is called (indirectly) by __del__, so it cannot # refer to anything outside of its local scope. - if _WIFSIGNALED(sts): - self.returncode = -_WTERMSIG(sts) - elif _WIFEXITED(sts): - self.returncode = _WEXITSTATUS(sts) - elif _WIFSTOPPED(sts): + if _WIFSTOPPED(sts): self.returncode = -_WSTOPSIG(sts) else: - # Should never happen - raise SubprocessError("Unknown child exit status!") - + self.returncode = waitstatus_to_exitcode(sts) def _internal_poll(self, _deadstate=None, _waitpid=os.waitpid, _WNOHANG=os.WNOHANG, _ECHILD=errno.ECHILD): |