Use waitid() rather than waitpid() to get full exit status

This commit is contained in:
Kovid Goyal 2022-06-13 00:19:56 +05:30
parent 6993157b3a
commit 163c211219
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C

View file

@ -49,12 +49,12 @@ def wait_for_child_death(child_pid: int, timeout: float = 1) -> Optional[int]:
st = time.monotonic()
while time.monotonic() - st < timeout:
try:
pid, status = os.waitpid(child_pid, os.WNOHANG)
x = os.waitid(os.P_PID, child_pid, os.WEXITED | os.WNOHANG)
except ChildProcessError:
return 0
else:
if pid == child_pid:
return status
if x is not None and x.si_pid == child_pid:
return x.si_status
time.sleep(0.01)
return None