wait4(2) ожидает смену состояния в стиле BSD

Other Alias

wait3

ОБЗОР

#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/wait.h>


pid_t wait3(int *status, int options,
struct rusage *rusage);

pid_t wait4(pid_t pid, int *status, int options,
struct rusage *rusage);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wait3():

_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

wait4():
_BSD_SOURCE

ОПИСАНИЕ

Данные функции устарели. Вместо них рекомендуется использовать waitpid(2) или waitid(2).

Системные вызовы wait3() и wait4() похожи на waitpid(2), но дополнительно возвращают информацию об использовании ресурсов потомком в структуре, указываемой rusage.

Помимо использования аргумента rusage, вызов wait3():

    wait3(status, options, rusage);
эквивалентен:
    waitpid(-1, status, options);
Подобно этому, вызов wait4():
    wait4(pid, status, options, rusage);
эквивалентен:
    waitpid(pid, status, options);
Другими словами, wait3() ожидает любого потомка, а для wait4() может быть указан определённый потомок или потомки, которых нужно ожидать. Подробней см. wait(2).

Если rusage не равно NULL, то struct rusage, на которую он указывает, будет заполнен информацией о работе потомка. Подробней см. getrusage(2).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Как в waitpid(2).

ОШИБКИ

Как в waitpid(2).

СООТВЕТСТВИЕ СТАНДАРТАМ

4.3BSD.

В SUSv1 определена wait3(); в SUSv2 включена wait3(), но помечена как УСТАРЕВШАЯ; удалена в SUSv3.

ЗАМЕЧАНИЯ

Включать <sys/time.h> в настоящее время не требуется, но это увеличивает переносимость. (Безусловно, в <sys/resource.h> определена структура rusage с полями типа struct timeval, которая определена в <sys/time.h>.)

Отличия между библиотекой C и ядром

В Linux, wait3() является библиотечной функцией, реализованной на основе системного вызова wait4().