.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" (c) 1993 by Thomas König (ig25@rz.uni-karlsruhe.de) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" License. .\" .\" Modified Sat Jul 24 13:32:44 1993 by Rik Faith (faith@cs.unc.edu) .\" German Translation Tue Mar 26 21:25:00 1996 Elmar Jansen (ej@pumuckel.gun.de) .\" Modified Mon Jun 10 00:38:50 1996 by Martin Schulze (joey@linux.de) .\" .TH WAIT4 2 "26. März 1996" "Linux" "Systemaufrufe" .SH BEZEICHNUNG wait3, wait4 \- wartet auf die Beendigung eines Prozesses, BSD style .SH ÜBERSICHT .nf .B #define _USE_BSD .B #include .B #include .B #include .sp 2 .BI "pid_t wait3(int *" "status" ", int " options "," .BI " struct rusage *" rusage ")" .sp .BI "pid_t wait4(pid_t " pid ", int *" status ", int " options , .BI " struct rusage *" rusage ")" .fi .SH BESCHREIBUNG Die Funktion .B 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 .B wait4 unterbricht die Ausführung des aktuellen Prozesses bis sich der Kind-Prozess mit der Prozessnummer .I pid beendet, oder ein Signal eintrifft, um den aktuellen Prozess zu beenden. Wenn der Kind-Prozess mit der Prozessnummer .I pid schon beendet ist (ein so genannter Zombie), wird die Funktion sofort beendet. Alle Systemressourcen des Kind-Prozesses werden freigegeben. Der Wert von .I pid kann einer der Folgenden sein: .IP "< \-1" hierbei wird auf ein beliebiges Kind gewartet des Prozessgruppennummer gleich ist mit dem absoluten Wert von .IR pid . .IP \-1 hierbei wird auf irgendein Kind gewartet: dies ist identisch mit dem Aufruf von .BR wait3 . .IP 0 hierbei wird auf irgendein Kind gewartet dessen Prozessgruppennummer gleich ist mit der des Vaters. .IP "> 0" hierbei wird auf das Kind gewartet dessen Prozessnummer gleich ist mit dem Wert von .IR pid . .PP Der Wert von .I options ist das ERgebnis eines exclusiven ODER von keinem oder mehreren der folgenden Konstanten: .TP .B WNOHANG hierbei wird sofort zurückgekehrt wenn auf kein Kind gewartet werden muss. .TP .B WUNTRACED hierbei wird auch zurückgekehrt wenn auf Kinder gewartet werden soll die gestoppt sind und deren Status noch nicht zurückgegeben wurde. .PP Wenn .I status nicht .BR NULL , ist speichern .B wait3 or .B wait4 die Stausinformation in der Variablen .IR statloc . .PP Der Status kann mit folgenden Makros ermittelt werden: .TP .BI WIFEXITED(* status ) ist nicht Null wenn das Kind normal beendet wurde. .TP .BI WEXITSTATUS(* status ) wertet die letzten acht Bits des Rückgabewertes des Kindes aus, die als Argument der Funktion .B exit gesetzt, oder als Argument eines .B return Statements des main Programms gesetzt wurden. Dieses Makro kann nur benutzt werden wenn .B WIFEXITED einen Wert ungleich Null liefert. .TP .BI WIFSIGNALED(* status ) liefert wahr zurück, wenn das Kind aufgrund eines nicht abgefangenen Signals beendet wurde. .TP .BI WTERMSIG(* status ) liefert die Signalnummer des Signals das des Kind beendete. Dieses Makro kann nur benutzt werden wenn .B WIFSIGNALED einen Wert ungleich Null liefert. .TP .BI 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 .B WUNTRACED erfolgte. .TP .BI WSTOPSIG(* status ) liefert die Signalnummer des Signals das das Kind stoppte. Dieses Makro kann nur benutzt werden wenn .B WIFSTOPPED einen Wert ungleich Null liefert. Wenn .I rusage nicht .BR NULL , ist wird .B struct rusage , wie in .I definiert, mit Accountinginformationen gefüllt. Siehe dazu .BR getrusage (2). .SH "RÜCKGABEWERT" Die Prozessnummer des Kindes welches sich beendet, oder bei einem Fehler \-1, oder Null wenn .B WNOHANG benutzt wurde und kein Kind mehr existierte. In diesem Fall wird .I errno auf einen entsprechenden Wert gesetzt. .SH "ERRORS" .TP .B ECHILD Wenn der Kindprozess mit der .I pid nicht existiert. .TP .B 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. .TP .B ERESTARTSYS Wenn .B WNOHANG nicht gesetzt wurde und ein nicht blockierendes Signal oder ein .B SIGCHLD zurückgegeben wurde; dies ist eine Erweiterung des POSIX.1 Standards. .SH "KONFORM ZU" POSIX.1 .SH "SIEHE AUCH" .BR signal (2), .BR getrusage (2), .BR wait (2), .BR signal (7).