wait4()

Ожидать смены состояния у одного или более дочерних процессов

Прототип:

#include <sys/types.h>
#include <sys/wait.h>
pid_t wait4( pid_t pid,
int *stat_loc,
int options,
struct rusage *resource_usage );

Аргументы:

pid
Набор дочерних процеесов, для которых необходимо получить инфомрацию о статусе:
stat_loc
NULL или указатель на место, где функция может сохранить статус завершения дочернего процесса. Для ознакомления со справочными материалами о макросах, которые извлекают информацию из статуса, см. Макросы статуса.
options
Комбинация следующих флагов (или ни один из них):
WCONTINUED — вернуть статус для любого дочернего процесса, который был остановлен и продолжился.
WEXITED — ждать завершения процесса(ов).
WNOHANG — завершить немедленно, если нет дочерних процессов для ожидания.
WNOWAIT — держать процесс в состоянии ожидания. Это не влияет на состояние процесса; процесс можно ждать снова после завершения вызова.
WSTOPPED — ждать и возвращать статус любого дочернего процесса, который остановился из-за полученного сигнала.
WUNTRACED — сообщать о статусе остановленного дочернего процесса.
resource_usage
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.

Коды ошибок:

ECHILD
Процесс не имеет ожидаемых дочерних процессов, которые соответствует условию из аргумента pid.
EINTR
Функция прервана сигналом. Значение по указателю stat_loc не определено.
EINVAL
Значение аргумента options некорректно.

Классификация:

Unix

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct rusage, exit(), fork(), pause(), wait(), wait3(), waitid(), waitpid()




Предыдущий раздел: Описание API системной библиотеки