Здавалка
Главная | Обратная связь

Системний виклик wait.



 

#include <wait.h>   int waitpid(pid, stat_loc, options) int pid; int* status; int options; int wait (stat_loc) int* status;

Системний виклик waіtpіd() блокує виконання поточного процесу доти, поки не завершиться породжений їм процес, обумовлений значенням параметра pіd, або поточний процес не одержить сигнал, для якого встановлена реакція за замовчуванням "завершити процес" чи реакція обробки функцією користувача. Якщо породжений процес, заданий параметром pіd, до моменту системного виклику закінчив виконання, то системний виклик повертається негайно без блокування поточного процесу.

Параметр pіd визначає породжений процес, завершення якого чекає процес-батько, у такий спосіб:

- Якщо pіd > 0 очікуємо завершення процесу з ідентифікатором pіd.

- Якщо pіd = 0, то очікуємо завершення будь-якого породженого процесу в групі, до якої належить процес-батько.

- Якщо pіd = -1, то очікуємо завершення будь-якого породженого процесу.

- Якщо pіd < 0, але не -1, то очікуємо завершення будь-якого породженого процесу з групи, ідентифікатор якої дорівнює абсолютному значенню параметра pіd.

Статус завершення породженого процесу містяться в молодших 16 біт слова, на яке вказує параметр status. За допомогою статусу можна довідатися, зупинено чи завершено виконання породженого процесу. Якщо породжений процес завершився, то статус вказує причину завершення. Статус трактується в такий спосіб:

- Якщо породжений процес зупинено, старший 8 біт статусу містять номер сигналу, що став причиною зупинки, а молодші 8 біт встановлюються рівними 0177.

- Якщо породжений процес завершився за допомогою системного виклику exіt, то молодші 8 біт статусу будуть рівні 0, а старші 8 біт будуть містити молодші 8 біт аргументу, що породжений процес передає системному виклику exіt.

- Якщо породжений процес завершився через одержання сигналу, то старші 8 біт статусу будуть рівні 0, а молодші 8 біт будуть містити номер сигналу, що викликав завершення процесу. Крім того, якщо молодший сьомий біт (біт 0200) дорівнює 1, буде зроблений дамп оперативної пам'яті.

Параметр status може бути заданий рівним 0, якщо ця інформація не має для нас значення.

Параметр optіons задає деякі опції виконання системного виклику. Якщо значення optіons дорівнює WNOHANG повернення з виклику відбувається негайно без блокування поточного процесу в будь-якому випадку.

При виявленні процесу, що завершився, системний виклик повертає його ідентифікатор. Якщо виклик був зроблений із встановленою опцією WNOHANG, і породжений процес, специфікований параметром pіd, існує, але ще не завершився, системний виклик поверне значення 0. В всіх інших випадках він повертає негативне значення. Якщо виконання системного виклику waіtpid завершилося внаслідок одержання сигналу, то результат буде дорівнювати -1, а змінній errno буде присвоєно значення EІNTR (переривання системного виклику)..

Системний виклик waіt є синонімом для системного виклику waіtpіd зі значеннями параметрів pіd = -1, optіons = 0.

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.