Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       wait3, wait4 - ожидать окончания процесса, стиль BSD

ОБЗОР

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

ОПИСАНИЕ

       Функция  wait3  приостанавливает выполнение текущего процесса, пока его
       потомок не завершится или пока не будет получен сигнал  для  завершения
       текущего  процесса  или  вызова функции-обработчика этого сигнала. Если
       потомок уже завершился к моменту вызова этой  функции  (так  называемый
       "zombie" (зомби) процесс), то возврат из функции происходит мнгновенно.
       Все системные ресурсы, которые использовал потомок - освобождаются.

       Функция wait4 приостанавливает выполнение текущего процесса,  пока  его
       потомок,  заданный  аргументом pid не завершится или пока пока не будет
       получен  сигнал   для   завершения   текущего   процесса   или   вызова
       функции-обработчика  этого  сигнала.  Если потомок, заданный аргументом
       pid уже завершился  к  моменту  вызова  этой  функции  (так  называемый
       "zombie" (зомби) процесс), то возврат из функции происходит мнгновенно.
       Все системные ресурсы, которые использовал потомок - освобождаются.

       Значение pid может быть:

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

       -1     что    означает    необходимость    ожидать    окончания    всех
              процессов-потомков; это эквивалентно вызову wait3.

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

       > 0    что  означает  необходимость ожидать окончания процесса-потомка,
              чей идентификатор процесса равен значению pid.

       Значение options является битовой маской,  которая  получается  битовым
       сложением (OR) следующих констант:

       WNOHANG
              означет  немедленный  возврат,  если  нет  потомков, для которых
              нужно ожидать завершения.

       WUNTRACED
              означает также возврат для потомков которые  остановлены  и  чьё
              состояние не поддаётся определению.

       Если status не NULL, wait3 или wait4 сохраняют информацию о состоянии в
       месте, на которое указывает status.

       Это состояние может быть  оценено  следующими  макросами  (эти  макросы
       получают  буфер  состояния  (in)  как  аргумент  --, но не указатель на
       буфер!):

       WIFEXITED(status)
              не ноль, если потомок нормально завершился.

       WEXITSTATUS(status)
              оценивает   наименее   значимые   восемь   бит   кода   возврата
              завершившегося  процесса-потомка,  который  может быть задан как
              аргумент для вызова exit() или как аргумент для оператора return
              в  основной  программе.   Данный  макрос можно применять только,
              если WIFEXITED вернул не ноль.

       WIFSIGNALED(status)
              возврашает true,  если  процесс-потомок  завершился  потому  что
              получил сигнал, который не смог обработать.

       WTERMSIG(status)
              возвращает   номер   сигнала,   который   привёл   к  завершению
              процесса-потомка.  Данный макрос  можно  применять  только  если
              WIFSIGNALED возвратил не ноль.

       WIFSTOPPED(status)
              возвращает    true,   если   процесс-потомок,   который   вернул
              управление, в настоящий момент остановлен; такое возможно только
              если данный вызов был выполнен, используя WUNTRACED.

       WSTOPSIG(status)
              возвращает   номер  сигнала,  по  которому  процесс-потомок  был
              остановлен.   Данный  макрос   можно   применять   только   если
              WIFSTOPPED вернул не ноль.

       Если  rusage  не NULL, то структура struct rusage которая описывается в
       <sys/resource.h>  будет  заполнена  учётной  информацией.   Подробности
       смотрите в getrusage(2).

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

       Возвращается идентификатор завершившегося процесса-потомка, -1 в случае
       ошибки (особенно, когда не существует процессов-потомков,  для  которых
       нужно  ожидать  завершения) или возвращается ноль, если был использован
       WNOHANG , но пока нет доступного процесса-потомка.   В  последних  двух
       случаях errno устанавливается соответствующим образом.

ОШИБКИ

       ECHILD Указанный  процесс-потомок, для которого осуществляется ожидание
              завершения, не существует.

       EINTR  Если WNOHANG не  был  установлен  и  был  перехвачен  какой-либо
              неблокирующий сигнал или SIGCHLD .

       EINVAL Для wait4 было задано неправильное значение для options .

ЗАМЕЧАНИЯ

       Подключение  <sys/time.h>  в данный момент не требуется, но увеличивает
       переносимость на другие  платформы.   (Действительно,  <sys/resource.h>
       звдаёт  структуру  rusage  с  полями типа struct timeval , описанными в
       <sys/time.h>.)

       Прототипы для этих функций доступны только если задан флаг  _BSD_SOURCE
       (или  явно  или  неявно,  если  не  задан  _POSIX_SOURCE или компиляция
       осуществляется с опцией -ansi).

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

       SVr4, POSIX.1

СМОТРИ ТАКЖЕ

       signal(2), getrusage(2), wait(2), signal(7)

ПЕРЕВОД

       Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2004