Beschreibung | Der aufrufende Prozess wird durch waitid() solange angehalten, bis einer der Kindprozesse den Zustand ändert. Der aktuelle Zustand des betreffenden Kindprozesses wird in die Struktur eingetragen, auf die infop zeigt. Wenn ein Kindprozess den Zustand vor dem Aufruf von waitid() geändert hat, kehrt waitid() sofort zurück. Die Argumente idtype und id geben an, auf welche Kindprozesse waitid() warten soll. Wenn idtype gleich P_PID ist, wartet waitid() auf den Kindprozess, der die Prozessnummer (pid_t) id hat. Wenn idtype gleich P_PGID ist, wartet waitid() auf einen der Kindprozesse mit der Prozessgruppennummer (pid_t) id. Wenn idtype gleich P_ALL ist, wartet waitid() auf einen beliebigen Kindprozess, und id wird ignoriert.
Das Argument options wird verwendet, um anzugeben, auf welche Zustandsänderungen waitid() warten soll. Die Zustandsänderungen werden durch bitweise ODER-Verknüpfung der folgenden Flags angegeben: WEXITED
| wartet darauf, dass Prozesse terminieren (exit). | WTRAPPED
| wartet darauf, dass ablaufverfolgte Prozesse auf Unterbrechungen stoßen oder einen Haltepunkt erreichen (siehe ptrace() ). | WSTOPPED
| wartet und liefert den Prozessstatus eines Kindprozesses, welcher nach dem Empfang eines Signals gestoppt hat. | WCONTINUED
| liefert den Status für einen Kindprozess, der angehalten und wieder aufgenommen wurde. | WNOHANG
| kehrt sofort zurück, falls keine Kindprozesse vorhanden sind, auf die gewartet werden müsste. | WNOWAIT
| hält den Prozess, dessen Status in infop zurückgegeben wurde, in einem Wartezustand. Der Status dieses Prozesses wird dadurch nicht berührt, es kann erneut auf diesen Prozess gewartet werden, wenn der Aufruf abgeschlossen ist. |
infop muss auf eine siginfo_t -Struktur zeigen, wie sie in siginfo() definiert wird. Kehrt waitid() zurück, weil es einen Kindprozess gefunden hat, der die in idtype und options spezifizierten Bedingungen erfüllt, wird vom System in siginfo_t der Zustand dieses Prozesses eingetragen. Das Strukturelement si_signo hat immer den Wert SIGCHILD . Werden Threads verwendet, so wirkt sich diese Funktion auf den Prozess oder auf einen Thread wie folgt aus: Der aufrufende Thread wird solange suspendiert, bis einer der Kindprozesse den Zustand ändert. |