Python Glossary Русский

Python 3.3+Linux · macOSosfunction

os.waitid

os — waiting for processes

Flexibly wait for a child's state change; returns a details object. Availability: Unix.

Syntax

os.waitid(...)

It is more flexible than waitpid: events are chosen by flags (WEXITED, WSTOPPED, WCONTINUED), and with WNOWAIT the status is read while the child stays unreaped, so it can be waited on again. It returns an already decoded object, not an encoded status. With WNOHANG and no events it returns None.

Examples

import os
pid = os.fork()   # → ? только Unix: 0 в дочернем процессе, PID потомка в родительском
if pid == 0: os._exit(3)   # → ? потомок сразу завершается с кодом возврата 3
print(os.waitid(os.P_PID, pid, os.WEXITED | os.WNOHANG | os.WNOWAIT))   # → ? None, если потомок ещё не завершился; WNOWAIT не «съедает» статус — дождаться можно ещё раз
info = os.waitid(os.P_PID, pid, os.WEXITED)   # → ? блокирующее ожидание именно этого потомка, вернёт os.waitid_result
print(info.si_pid == pid, info.si_status)   # → ? True 3
print(info.si_code == os.CLD_EXITED)   # → True — потомок завершился сам, а не был убит сигналом
print(os.waitid(os.P_PID, pid, os.WEXITED))   # → ChildProcessError: этого потомка уже дождались, ждать больше некого

See also

Common errors

Open in the full glossarydocs.python.orgReport an inaccuracy