Документация по LinuxLinuxDoc.Ru 🔍

wait3, wait4 - ожидает завершения работы процесса (стиль BSD)

НАЗВАНИЕ
wait3, wait4 - ожидает завершения работы процесса (стиль
BSD)

СИНТАКСИС
#include
#include
#include
#include


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 уже прекратил свою работу на момент вызова
этой функции (такой процесс называется "зомби"), то
функция немедленно возвращается. Все системные ресурсы,
использованные дочерним процессом, будут освобождены.
Значение параметра pid может быть следующим:

0 - ожидание дочернего процесса, идентификатор
которого равен pid.

Параметр options состоит из комбинации следующих флагов:

WNOHANG
- немедленно вернуть управление вызывающему
процессу, если нет дочерних процессов, попадающих
под действие функции.

WUNTRACED
- вернуться, если существуют остановленные дочерние
процессы, а их статус еще не получен.

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

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

WIFEXITED(status)
не равен 0, если дочерний процесс корректно
завершил работу.

WEXITSTATUS(status)
возвращает 8 последних значащих битов кода возврата
завершенного дочернего процесса, который можно
задать в качестве параметра к функции exit() или в
качестве параметра оператора return в функции main
программы. Этот макрос работает только в том
случае, если WIFEXITED возвратил не 0.

WIFSIGNALED(status)
возвращает TRUE, если дочерний процесс прекратил
свою работу из-за того, что получил сигнал, который
не был обработан.

WTERMSIG(status)
возвращает номер сигнала, вызвавшего прекращение
работы дочернего процесса. Этот макрос работает
только в том случае, если WIFSIGNALED возвратил не
0.

WIFSTOPPED(status)
возвращает TRUE, если дочерний процесс,
использовавший return для возврата из функции, на
настоящий момент остановлен; это возможно только в
том случае, если функция была вызвана с флагом WUN-
TRACED.

WSTOPSIG(status)
возвращает номер сигнала, вызвавшего остановку
дочернего процесса. Этот макрос работает только в
том случае, если WIFSTOPPED возвратил не 0.

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

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

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

КОДЫ ОШИБОК
ECHILD Нет дочерних процессов заданного вида, завершивших
свою работу.

EINTR Флаг WNOHANG не был установлен, и вызывающим
процессом был получен неблокируемый сигнал или
сигнал SIGCHLD.

ЗАМЕЧАНИЯ
Использование сейчас уже не требуется, но
улучшает портируемость. (В самом деле,
определяет структуру rusage с полями типа struct timeval
определенными в .)

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

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, POSIX.1
Читать новости Linux в Telegram
Linux - wait3, wait4 - ожидает завершения работы процесса (стиль BSD)
Мы в соцсетях ✉