Python Glossary English

все Python 3osфункция

os.waitpid

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

Ждёт завершения конкретного дочернего процесса по PID; возвращает (pid, статус).

Синтаксис

os.waitpid(...)

С флагом os.WNOHANG не ждёт: если потомок ещё работает, возвращает (0, 0). Статус закодирован — для кода возврата используйте waitstatus_to_exitcode. На Windows первым аргументом передаётся хендл процесса, а не PID, и флаги не поддерживаются. Недождавшийся потомок на Unix остаётся «зомби» и занимает запись в таблице процессов.

Примеры

# Python 3.9+
import os
pid = os.fork()   # → ? только Unix: 0 в дочернем процессе, PID потомка в родительском
if pid == 0: os._exit(7)   # → ? потомок сразу завершается с кодом возврата 7
print(os.waitpid(pid, os.WNOHANG))   # → ? (0, 0), если потомок ещё не завершился — с WNOHANG вызов не блокирует
pid_done, status = os.waitpid(pid, 0)   # → ? блокирует до завершения: (PID потомка, закодированный статус)
print(os.waitstatus_to_exitcode(status))   # → 7 — код возврата, извлечённый из статуса
print(os.WIFEXITED(status), os.WEXITSTATUS(status))   # → ? True 7
print(os.waitpid(pid, 0))   # → ChildProcessError: этого потомка уже дождались, ждать больше некого

См. также

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

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