wait, waitpid (2)
  ожидание завершения процесса  

Синтаксис
 
    #include <sys/types.h>
    #include <sys/wait.h>

    pid_t wait(int *status)
    pid_t waitpid(pid_t pid, int *status, int options);                      

Описание
 

wait приостанавливает выполнение текущего процесса до завершения какого-либо из его процессов-потомков.

waitpid приостанавливает выполнение текущего процесса до завершения заданного процесса или проверяет завершение заданного процесса.

Если процесс уже завершился, то приостанов текущего процесса не происходит.

Параметры
 
 pid Если pid > 0, то он задает PID процесса, завершение которого ожидается/проверяется функцией waitpid.
Если pid = 0, то waitpid ожидает/проверяет завершение любого процесса той группы, к которой принадлежит текущий процесс.
Если pid < 0, то waitpid ожидает/проверяет завершение любого процесса - своего потомка.
 options Задает режим поведения waitpid. Может задаваться одним из следующих значений или их логическим ИЛИ:
 WNOHANG - не приостанавливать текущий процесс, если проверяемый процесс не завершился;
 WUNTRACED - не приостанавливать текущий процесс также для потомков, которые завершились, но о состоянии которых еще не доложено;
Значение options = 0 определяет переход в ожидание, если проверяемый процесс не завершился.
 status Если этот параметр не NULL, то он указывает на переменную, в которую wait или waitpid заносит состояние завершившегося процесса. Состояние завершившегося процесса сохраняется в 16-битную переменную следующего формата:

Если процесс завершился при помощи явного или неявного вызова функции exit(), то данные выглядят так (старший бит находится слева):

Если процесс был завершен сигналом, то данные выглядят так (старший бит находится слева):

Возвращаемое значение
  При нормальном выполнении функции возвращают PID завершившегося процесса. При ошибках выполнения возвращают -1 и устанавливают errno.

Функция waitpid возвращает 0, если она вызвана с options = WNOHANG, и проверяемый процесс еще не завершился.

См.также
  exit, signal


Список системных вызовов