wait3()

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

Прототип:

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

Аргументы:

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

Библиотека:

libc

Описание:

Функция wait3() позволяет вызывающему потоку получать информацию о состоянии для указанных дочерних процессов.

Вызов:

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 );

Возвращаемое значение:

Если статус дочернего процесса доступен, значение равно идентификатору дочернего процесса, для которого сообщен статус.

При появлении сигнала функция возвращает -1, а переменной errno присваивается значение EINTR.

Ноль, если wait3() вызван с WNOHANG в options и есть хотя бы один дочерний процесс, указанный в pid, для которого статус недоступен, или если статус недоступен для любого процесса указанного в pid.

В остальных случаях функция возвращает (pid_t)-1 и errno.

Коды ошибок:

ECHILD
Вызывающий процесс не имеет ожидаемых дочерних процессов, или набор процессов, указанных аргументом pid, не может находиться в состояниях, указанных параметрами аргумента.

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

Unix

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

Предостережения:

Для новых приложений следует использовать waitpid().

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

struct rusage, exit(), fork(), pause(), wait4(), waitid(), waitpid()




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