# os.waitpid ()

### os.waitpid ( *pid*, *options* )

Детали этой функции различаются в Unix и Windows.

В **Unix**: дождаться завершения дочернего процесса, заданного идентификатором процесса ***pid***, и вернуть кортеж, содержащий его идентификатор процесса и индикацию состояния выхода (закодированную как для [wait ()](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/obshie-sluzhby-operacionnoi-sistemy/os/upravlenie-processami/os.wait)). На семантику вызова влияет значение целочисленных параметров, которое для нормальной работы должно быть равно `0`.

Если ***pid*** больше `0`, **waitpid ()** запрашивает информацию о состоянии для этого конкретного процесса. Если ***pid*** равен `0`, запрос предназначен для статуса любого дочернего элемента в группе процессов текущего процесса. Если ***pid*** равен `-1`, запрос относится к любому дочернему элементу текущего процесса. Если ***pid*** меньше `-1`, статус запрашивается для любого процесса в группе процессов `-pid` (абсолютное значение ***pid***).

Ошибка OSError возникает со значением errno, когда системный вызов возвращает `-1`.

В **Windows**: дождаться завершения процесса, заданного идентификатором дескриптора процесса, и вернуть кортеж, содержащий ***pid***, и его статус выхода, сдвинутый влево на 8 бит (смещение упрощает кроссплатформенное использование функции). Значение ***pid***, меньшее или равное 0, не имеет особого значения в Windows и вызывает исключение. Значение целочисленных опций не имеет значения. ***pid*** может относиться к любому процессу, идентификатор которого известен, не обязательно дочернему процессу. Функции [spawn\*](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/obshie-sluzhby-operacionnoi-sistemy/os/upravlenie-processami/os.spawnl), вызываемые с помощью [P\_NOWAIT](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/obshie-sluzhby-operacionnoi-sistemy/os/upravlenie-processami/os.p_nowait), возвращают подходящие дескрипторы процесса.

[waitstatus\_to\_exitcode ()](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/obshie-sluzhby-operacionnoi-sistemy/os/upravlenie-processami/os.waitstatus_to_exitcode) может использоваться для преобразования статуса выхода в код выхода.

*Изменено в версии 3.5*: если системный вызов прерывается и обработчик сигнала не вызывает исключения, функция теперь повторяет системный вызов вместо того, чтобы вызывать исключение InterruptedError (объяснение см. в [PEP 475](https://www.python.org/dev/peps/pep-0475/)).
