Ожидать остановки или завершения дочернего процесса
#include <sys/types.h>#include <sys/wait.h>pid_t waitpid( pid_t pid,int *stat_loc,int options );
NULL
или указатель на место, где функция может сохранить статус завершения дочернего процесса. Для ознакомления со справочными материалами о макросах, которые извлекают информацию из статуса, см. Макросы статуса.libc
Функция waitpid() приостанавливает выполнение вызывающего потока до тех пор, пока не будет получена информация о состоянии одного из его завершенных дочерних процессов, или до появления сигнала, который либо завершает текущий процесс, либо требует вызвать функцию-обработчик. Если указанный дочерний процесс к моменту вызова функции уже завершился, то функция немедленно возвращается.
Функция waitpid() ведет себя так же, как и функция wait(), когда аргумент pid равен -1
и options равен нулю.
Только один из макросов WIFEXITED
( stat_val ) и WIFSIGNALED
( stat_val ) может возвращать ненулевое значение.
Если функция waitpid() отработала успешно, она возвращает ID завершенного дочернего процесса. Если функция waitpid() вызвана с WNOHANG
в options и есть хотя бы один дочерний процесс указанный в pid, для которого статус недоступен, функция возвращает нулевое значение. При появлении сигнала функция возвращает -1
, а переменной errno присваивается значение EINTR
.
POSIX 1003.1
spawn(), wait(), wait3(), wait4(), waitid()
Предыдущий раздел: Описание API системной библиотеки