Provided by: manpages-pl-dev_20051117-1_all bug

NAZWA

       wait3, wait4 - oczekiwanie na zakończenie procesu (styl BSD)

SKŁADNIA

       #include <sys/types.h>
       #include <sys/time.h>
       #include <sys/resource.h>
       #include <sys/wait.h>

       pid_t wait3(int *status, int opcje,
             struct rusage *ruzycie);

       pid_t wait4(pid_t pid, int *status, int opcje,
             struct rusage *ruzycie);

OPIS

       Funkcja  wait3  zawiesza  wykonywanie bieżącego procesu aż jego potomek
       nie zakończy działania, lub aż nie zostanie dostarczony sygnał, którego
       akcją  jest zakończenie bieżącego procesu lub wywołanie funkcji obsługi
       sygnału.   Jeśli  potomek  zakończył  działanie  przed  wywołaniem  tej
       funkcji   (tzw.   "zombie"  -  proces  duch),  zakończy  ona  działanie
       natychmiast.  Wszelkie  zasoby  systemowe  używane  przez  potomka   są
       zwalniane.

       Funkcja  wait4  zawiesza  wykonywanie  bieżącego  procesu  aż  potomek,
       określony przez  argument  pid  nie  zakończy  działania,  lub  aż  nie
       zostanie  dostarczony  sygnał, którego akcją jest zakończenie bieżącego
       procesu lub wywołanie funkcji obsługi sygnału. Jeśli potomek  określony
       przez  pid  już  zakończył  działanie  (proces  duch),  funkcja  kończy
       działanie natychmiast.  Wszelkie zasoby systemowe używane przez potomka
       są zwalniane.

       Wartość pid może być jednym z:

       < -1   oznacza  oczekiwanie na dowolnego potomka, którego identyfikator
              grupy procesów jest równy modułowi wartości pid.

       -1     co oznacza  oczekiwanie  na  dowolny  proces  potomny;  jest  to
              równoważne wywołaniu wait3.

       0      oznacza  oczekiwanie na dowolnego potomka, którego identyfikator
              grupy procesów jest równy identyfikatorowi procesu wołającego.

       > 0    oznacza oczekiwanie na potomka, którego PID jest równy  wartości
              pid.

       Wartość  argumentu  opcje  jest  bitowym  OR  zera  lub  więcej spośród
       następujących stałych:

       WNOHANG
              oznacza zwrócenie wartości natychmiast  w  wypadku  gdy  nie  ma
              potomka, na którego można by czekać.

       WUNTRACED
              oznacza również nieobsługiwanie zatrzymanych potomków oraz tych,
              których status nie został zgłoszony.

       Jeśli status  nie  wynosi  NULL,  wait3  i  wait4  zapisują  w  miejscu
       wskazywanym przez status informacje o stanie.

       Stan ten może być określony za pomocą następujących makr (pobierających
       jako argument bufor stanu (wartość  int),  --   nie  wskaźnik  do  tego
       bufora:

       WIFEXITED(status)
              jest niezerowe, gdy potomek zakończył pracę normalnie.

       WEXITSTATUS(status)
              wyraża   ostatnich   osiem   znaczących   bitów   kodu   powrotu
              zakończonego potomka (który mógł  być  ustawiony  jako  argument
              funkcji  exit  lub  jako  argument instrukcji return w programie
              głównym. Makro to może być przetwarzane  tylko  jeśli  WIFEXITED
              zwróciło wartość niezerową.

       WIFSIGNALED(status)
              zwraca  prawdę,  jeśli  potomek  zakończył  działanie  z  powodu
              nieprzechwyconego sygnału.

       WTERMSIG(status)
              zwraca  numer  sygnału,  który  spowodował  zakończenie  procesu
              potomnego.  Makro to może być wyliczane tylko po zwróceniu przez
              WIFSIGNALED wartości niezerowej.

       WIFSTOPPED(status)
              zwraca prawdę, jeśli proces potomny,  który  spowodował  wyjście
              jest  obecnie  zatrzymany. Jest to możliwe tylko jeśli wywołanie
              wykonano z użyciem WUNTRACED.

       WSTOPSIG(status)
              zwraca numer  sygnału,  który  spowodował  zatrzymanie  potomka.
              Makro  to może być wyliczane tylko po zwróceniu przez WIFSTOPPED
              wartości niezerowej.

       Jeśli ruzycie nie jest  równe  NULL,  zdefiniowana  w  <sys/resource.h>
       struktura struct rusage, na którą ruzycie wskazuje, zostanie wypełniona
       informacjami o  wykorzystywaniu  zasobów.   Szczegóły  znajdują  się  w
       getrusage(2).

WARTOŚĆ ZWRACANA

       Identyfikator   zakończonego  procesu  lub  -1  w  przypadku  błędu  (w
       szczególności, gdy nie istnieje proces  potomny  zadanego  rodzaju,  na
       który  można  by  oczekiwać),  lub  zero  jeśli użyto WNOHANG i nie był
       dostępny  żaden  potomek.  W  ostatnich  dwóch   przypadkach   zostanie
       odpowiednio ustawione errno.

BŁĘDY

       ECHILD Nie  istnieje żaden odpowiedni proces potomny, na który można by
              oczekiwać.

       EINTR  Jeśli nie ustawiono WNOHANG a został przechwycony niezablokowany
              sygnał lub SIGCHLD.

       UWAGI  Dołączenie <sys/time.h> nie jest obecnie wymagane, lecz zwiększa
              przenośność.   (Faktycznie,  <sys/resource.h>  zawiera   definje
              struktury  rusage  z polami typu struct timeval zdefiniowanego w
              <sys/time.h>.)

       Prototyp dla tych  funkcji  jest  dostępny  jedynie,  gdy  zdefiniowano
       _BSD_SOURCE  (jawnie  lub  pośrednio,  nie definiując _POSIX_SOURCE lub
       kompilując z opcją -ansi).

ZGODNE Z

       SVr4, POSIX.1

ZOBACZ TAKŻE

       signal(2), getrusage(2), wait(2), signal(7)