название
wait, waitpid - ждать завершения процесса
конспект
#включают pid_t wait (int * статус );pid_t waitpid (pid_t ПИД-регулятор , int * статус , int опции );
Подождите функция приостанавливает выполнение текущего процесса до тех пор, пока ребенок не выйдет, или пока не поступит сигнал, действие которого заключается в прекращении текущего процесса или вызове функции обработки сигнала. Если дочерний элемент уже выходил к моменту вызова (так называемый процесс «зомби»), функция немедленно возвращается. Любые системные ресурсы, используемые ребенком, освобождаются. waitpid функция приостанавливает выполнение текущего процесса до рождения ребенка, как указано в ПИД-регулятор аргумент вышел или пока не поступит сигнал, действие которого заключается в прекращении текущего процесса или вызове функции обработки сигнала. Если ребенок по просьбе ПИД-регулятор уже вышел к моменту вызова (так называемый «зомбический» процесс), функция немедленно возвращается. Любые системные ресурсы, используемые ребенком, освобождаются. Значение ПИД-регулятор может быть одним из: < -1 что означает ждать любого дочернего процесса, идентификатор группы процессов которого равен абсолютной величине ПИД-регулятор . -1 что означает ждать любого дочернего процесса; это то же поведение, чтоПодождите экспонаты. 0 что означает ожидание любого дочернего процесса, идентификатор группы процессов которого совпадает с идентификатором вызывающего процесса. > 0 что означает ждать, пока ребенок, чей идентификатор процесса равен значению ПИД-регулятор . Значение опции является OR, равным нулю или более из следующих констант: WNOHANG что означает немедленное возвращение, если ребенок не вышел. WUNTRACED что означает также возвращение для детей, которые были остановлены, и о статусе которых не сообщалось. (Для вариантов только для Linux см. Ниже.) Если статус не являетсяНОЛЬ, Подождите или жеwaitpid сохранять информацию о состоянии в местоположении, на которое указывает статус . Этот статус можно оценить с помощью следующих макросов (эти макросы принимают буфер stat (ИНТ) в качестве аргумента --- не указатель на буфер!): WIFEXITED ( статус ) не имеет значения, если ребенок вышел из него нормально. WEXITSTATUS ( статус ) оценивает наименее значимые восемь битов кода возврата дочернего объекта, который был завершен, что может быть установлено как аргумент вызовавыход() или как аргумент для вернуть заявление в основной программе. Этот макрос можно оценить только в том случае, еслиWIFEXITEDвозвращает ненулевое значение. WIFSIGNALED ( статус ) возвращает true, если дочерний процесс вышел из-за сигнала, который не был обнаружен. WTERMSIG ( статус ) возвращает номер сигнала, который вызвал завершение дочернего процесса. Этот макрос можно оценить только в том случае, еслиWIFSIGNALED возвращает ненулевое значение. WIFSTOPPED ( статус ) возвращает true, если дочерний процесс, вызвавший возврат, в настоящий момент остановлен; это возможно только в том случае, если вызов был выполнен с использованиемWUNTRACED. WSTOPSIG ( статус ) возвращает номер сигнала, который заставлял ребенка останавливаться. Этот макрос можно оценить только в том случае, еслиWIFSTOPPED возвращает ненулевое значение. Некоторые версии Unix (например, Linux, Solaris, но не AIX, SunOS) также определяют макросWCOREDUMP ( статус ) для проверки того, загружен ли дочерний процесс ядра. Используйте это только в #ifdef WCOREDUMP … #endif. Идентификатор процесса дочернего элемента, который вышел, или ноль, еслиWNOHANG и ни один ребенок не был доступен, или -1 при ошибке (в этом случае ERRNO устанавливается на соответствующее значение). ECHILD если процесс, указанный в ПИД-регулятор не существует или не является дочерним элементом вызывающего процесса. (Это может произойти для собственного ребенка, если для SIGCHLD установлено значение SIG_IGN. См. Также раздел LINUX NOTES о потоках.) EINVAL если опции аргумент недействителен. EINTR еслиWNOHANG не был установлен, и неблокированный сигнал илиSIGCHLD был пойман. Описание
Возвращаемое значение
ошибки




