Rechercher une page de manuel
wait4
Langue: ru
Version: 1997-06-23 (fedora - 25/11/07)
Section: 2 (Appels système)
Sommaire
ИМЯ
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> 2004Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre