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