Provided by:
manpages-de-dev_0.5-4.1ubuntu1_all 
BEZEICHNUNG
wait3, wait4 - wartet auf die Beendigung eines Prozesses, BSD style
ÜBERSICHT
#define _USE_BSD
#include <sys/types.h>
#include <sys/resource.h>
#include <sys/wait.h>
pid_t wait3(int *status, int options,
struct rusage *rusage)
pid_t wait4(pid_t pid, int *status, int options,
struct rusage *rusage)
BESCHREIBUNG
Die Funktion wait3 unterbricht Ausführung des aktuellen Prozesses bis
sich ein Kind-Prozess beendet, oder ein Signal eintrifft, um den
aktuellen Prozess zu beenden. Wenn ein Kind-Prozess schon beendet ist
(ein so genannter Zombie), wird die Funktion sofort beendet. Alle
Systemressourcen des Kind-Prozesses werden freigegeben.
Die Funktion wait4 unterbricht die Ausführung des aktuellen Prozesses
bis sich der Kind-Prozess mit der Prozessnummer pid beendet, oder ein
Signal eintrifft, um den aktuellen Prozess zu beenden. Wenn der Kind-
Prozess mit der Prozessnummer pid schon beendet ist (ein so genannter
Zombie), wird die Funktion sofort beendet. Alle Systemressourcen des
Kind-Prozesses werden freigegeben.
Der Wert von pid kann einer der Folgenden sein:
< -1 hierbei wird auf ein beliebiges Kind gewartet des
Prozessgruppennummer gleich ist mit dem absoluten Wert von pid.
-1 hierbei wird auf irgendein Kind gewartet: dies ist identisch mit
dem Aufruf von wait3.
0 hierbei wird auf irgendein Kind gewartet dessen
Prozessgruppennummer gleich ist mit der des Vaters.
> 0 hierbei wird auf das Kind gewartet dessen Prozessnummer gleich
ist mit dem Wert von pid.
Der Wert von options ist das ERgebnis eines exclusiven ODER von keinem
oder mehreren der folgenden Konstanten:
WNOHANG
hierbei wird sofort zurückgekehrt wenn auf kein Kind gewartet
werden muss.
WUNTRACED
hierbei wird auch zurückgekehrt wenn auf Kinder gewartet werden
soll die gestoppt sind und deren Status noch nicht zurückgegeben
wurde.
Wenn status nicht NULL, ist speichern wait3 or wait4 die
Stausinformation in der Variablen statloc.
Der Status kann mit folgenden Makros ermittelt werden:
WIFEXITED(*status)
ist nicht Null wenn das Kind normal beendet wurde.
WEXITSTATUS(*status)
wertet die letzten acht Bits des Rückgabewertes des Kindes aus,
die als Argument der Funktion exit gesetzt, oder als Argument
eines return Statements des main Programms gesetzt wurden.
Dieses Makro kann nur benutzt werden wenn WIFEXITED einen Wert
ungleich Null liefert.
WIFSIGNALED(*status)
liefert wahr zurück, wenn das Kind aufgrund eines nicht
abgefangenen Signals beendet wurde.
WTERMSIG(*status)
liefert die Signalnummer des Signals das des Kind beendete.
Dieses Makro kann nur benutzt werden wenn WIFSIGNALED einen Wert
ungleich Null liefert.
WIFSTOPPED(*status)
liefert wahr zurück, wenn das Kind, das den Return auslöste, im
Moment gestoppt ist. Dies ist nur der Fall wenn der Aufruf
während eines WUNTRACED erfolgte.
WSTOPSIG(*status)
liefert die Signalnummer des Signals das das Kind stoppte.
Dieses Makro kann nur benutzt werden wenn WIFSTOPPED einen Wert
ungleich Null liefert.
Wenn rusage nicht NULL, ist wird struct rusage , wie in
<sys/resource.h> definiert, mit Accountinginformationen gefüllt.
Siehe dazu getrusage(2).
RÜCKGABEWERT
Die Prozessnummer des Kindes welches sich beendet, oder bei einem
Fehler -1, oder Null wenn WNOHANG benutzt wurde und kein Kind mehr
existierte. In diesem Fall wird errno auf einen entsprechenden Wert
gesetzt.
ERRORS
ECHILD Wenn der Kindprozess mit der pid nicht existiert.
EPERM Wenn die effektive Userid des aufrufenden Prozesses nicht
übereinstimmt mit dem Prozess auf den gewartet werden soll und
die effektive Userid des aufrufenden Prozesses nicht die des
Superusers ist.
ERESTARTSYS
Wenn WNOHANG nicht gesetzt wurde und ein nicht blockierendes
Signal oder ein SIGCHLD zurückgegeben wurde; dies ist eine
Erweiterung des POSIX.1 Standards.
KONFORM ZU
POSIX.1
SIEHE AUCH
signal(2), getrusage(2), wait(2), signal(7).