Provided by:
manpages-pl-dev_20060617-1_all 
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)