|
НАЗВАНИЕ
wait - ожидание завершения порожденного процесса
СИНТАКСИС
int wait (stat_loc) int *stat_loc;
ОПИСАНИЕ
В результате выполнения системного вызова wait процесс
приостанавливается до тех пор, пока один из непосредственно порожденных им процессов не завершится, или пока
порожденный процесс, который находится в режиме трассировки, не остановится при достижении точки прерывания.
Преждевременный выход из системного вызова wait происходит, если был получен сигнал; если же порожденный
процесс остановился или завершился раньше вызова wait,
то возврат происходит немедленно.
Если аргумент stat_loc не равен 0, то 16 бит информации, называемые статусом, помещаются в младшие 16 бит слова, на которое указывает stat_loc. С помощью статуса можно узнать, приостановлено или завершено выполнение порожденного процесса. Если порожденный процесс завершился, то статус указывает причину завершения. Статус трактуется следующим образом:
Если родительский процесс завершается без ожидания завершения порожденных процессов, то для последних идентификатор родительского процесса становится равным 1. Это означает, что процесс инициализации наследует порожденные процессы [см. intro(2)].
Системный вызов wait завершается неудачей и происходит немедленный возврат, если выполнено следующее условие:
СМ. ТАКЖЕ
exec(2), exit(2), fork(2), intro(2), pause(2),
ptrace(2), signal(2).
ПРЕДОСТЕРЕЖЕНИЯ
Системный вызов wait завершается неудачей и его действия не определены, если аргумент stat_loc указывает за
пределы отведенного процессу адресного пространства.
См. также ПРЕДОСТЕРЕЖЕНИЯ в signal(2).
ДИАГНОСТИКА
Если выполнение системного вызова wait завершилось
вследствие получения сигнала, то результат будет равен
-1, а переменной errno будет присвоено значение EINTR
(прерывание системного вызова). Если wait завершился
из-за приостановки или завершения порожденного процесса, то результатом служит идентификатор порожденного
процесса. В противном случае возвращается -1, а переменной errno присваивается код ошибки.
|