Python Glossary English

Python 3.3+Linux · macOSosфункция

os.waitid

os — ожидание процессов

Гибко ждёт изменения состояния дочернего процесса; возвращает объект с подробностями. Доступно на Unix.

Синтаксис

os.waitid(...)

Гибче waitpid: события выбираются флагами (WEXITED, WSTOPPED, WCONTINUED), а с WNOWAIT статус читается, но потомок остаётся несобранным — его можно дождаться ещё раз. Возвращает уже разобранный объект, а не закодированный статус. С WNOHANG при отсутствии событий возвращает None.

Примеры

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: этого потомка уже дождались, ждать больше некого

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности