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