waitid(2) waitid(2)
NAME
waitid - Auf Statusänderung von Sohnprozessen warten
SYNTAX
#include <sys/types.h>
#include <wait.h>
int waitid(idtypet idtype, idt id, siginfot *infop, int options);
BESCHREIBUNG
Der aufrufende Prozeß wird durch waitid() so lange angehalten, bis
einer der Sohnprozesse den Status ändert. Der aktuelle Status eines
Sohnprozesses wird in der Struktur, auf die infop zeigt, aufgenommen.
Wenn ein Sohnprozeß den Status vor dem Aufruf von waitid() geändert
hat, kehrt waitid() sofort zurück.
Die Argumente idtype und id geben an, auf welche Sohnprozesse waitid()
warten soll.
- Wenn idtype gleich PPID ist, wartet waitid() auf den Sohnprozeß,
der die Prozeß-ID (pidt)id hat.
- Wenn idtype gleich PPGID ist, wartet waitid() auf irgendeinen
Sohnprozeß mit der Prozeßgruppen-ID (pidt)id.
- Wenn idtype gleich PALL ist, wartet waitid() auf irgendeinen Sohn-
prozeß, und id wird ignoriert.
Das Argument options wird verwendet, um die gewünschten Statusänderun-
gen anzugeben, auf die waitid() warten soll. Die Statusänderungen wer-
den durch bitweise ODER-Verknüpfung der folgenden Flags angegeben:
WEXITED Wartet darauf, daß Prozesse beendet werden (exit).
WTRAPPED Wartet darauf, daß ablaufverfolgte Prozesse auf Unterbre-
chungen stoßen oder einen Haltepunkt erreichen [siehe
ptrace(2)].
WSTOPPED Wartet auf und liefert den Prozeßstatus eines Sohnprozes-
ses zurück, der nach dem Empfang eines Signals angehalten
wurde.
WCONTINUED Liefert den Status für einen Sohnprozeß zurück, der ange-
halten und wieder aufgenommen wurde.
WNOHANG Kehrt sofort zurück, wenn keine Sohnprozesse vorliegen,
auf die gewartet wird.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
waitid(2) waitid(2)
WNOWAIT Der Prozeß, dessen Status in infop zurückgegeben wurde,
bleibt in einem Status, bei dem weiter auf den Prozeß
gewartet werden kann. Dies hat keine Auswirkung auf den
Status des Prozesses; auf den Prozeß kann nach Beendigung
dieses Aufrufs erneut gewartet werden.
infop muß auf eine siginfot-Struktur zeigen, wie sie in siginfo(5)
definiert wird. Das System trägt für siginfot den Status des Prozes-
ses ein, auf den gewartet wird.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
waitid() schlägt bei folgenden Bedingungen fehl:
EFAULT infop zeigt auf eine ungültige Adresse.
EINTR waitid() wurde unterbrochen, weil der aufrufende Prozeß ein
Signal empfing.
EINVAL Ein ungültiger Wert wurde für options übergeben.
EINVAL idtype und id geben eine ungültige Prozeßmenge an.
ECHILD Die Prozeßmenge, die durch idtype und id angegeben wurde,
enthält keine Prozesse, auf die noch niemand wartet oder
Prozesse, die nicht existieren.
ERGEBNIS
Kehrt waitid() aufgrund einer Statusänderung eines Sohnprozesses
zurück, wird der Wert 0 zurückgegeben. Ansonsten wird -1 zurückgelie-
fert und errno gesetzt, um den Fehler anzuzeigen.
SIEHE AUCH
exec(2), exit(2), fork(2), pause(2), ptrace(2), signal(2),
sigaction(2), wait(2), siginfo(5), types(5), wait(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98