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Сообщить о неточности