(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
pcntl_waitpid — Wartet auf ein oder gibt den Status eines abgezweigten Kindes zurück
Unterbricht die Ausführung des aktuellen Prozesses bis ein durch den Parameter process_id
angegebenes Kind sich beendet hat oder bis ein Signal ausgeliefert wurde, dessen Aktion den aktuellen Prozess beendet oder eine Signalverabeitungsfunktion aufruft.
Wenn ein Kind, welches durch process_id
angefordert wird, sich zum Zeitpunkt des Funktionsaufrufes bereits beendet hat (ein sog. "Zombie" Prozess) kehrt die Funktion umgehend zurück. Alle durch das Kind verwendeten Ressourcen werden freigegeben. Die waitpid(2) Handbuch-Seite des Systems ist bezüglich spezifischer Details, wie waitpid auf dem System arbeitet, zu konsultieren.
process_id
Der Wert von process_id
kann einer der Folgenden sein:
< -1 | wartet auf irgendeinen Kindprozess dessen Prozessgruppen ID gleich dem absoluten Wert von process_id ist. |
-1 | wartet auf irgendeinen Kindprozess; dies ist dasselbe Verhalten, welches die wait Funktion anbietet. |
0 | wartet auf irgendeinen Kindprozess dessen Prozessgruppen ID gleich dem Wert des aufrufenden Prozesses ist. |
> 0 | wartet auf das Kind, dessen Prozess ID gleich dem Wert von process_id ist. |
Hinweis:
Angeben von
-1
für den Parameterprocess_id
ist äquivalent zur Funktionalität der Funktion pcntl_wait() (ohneflags
).
status
pcntl_waitpid() speichert Statusinformationen im Parameter status
, welcher durch die folgenden Funktionen ausgewertet werden kann: pcntl_wifexited(), pcntl_wifstopped(), pcntl_wifsignaled(), pcntl_wexitstatus(), pcntl_wtermsig() und pcntl_wstopsig().
flags
Der Wert von flags
ist der Wert von keiner oder mehr der mittels OR
verknüpften folgenden beiden globalen Konstanten:
WNOHANG | Kehre umgehend zurück, wenn kein Kind beendet wurde.. |
WUNTRACED | Kehre für Kinder zurück, die gestoppt sind und für solche, deren Status nicht gemeldet ist. |
pcntl_waitpid() gibt entweder die Prozess-ID des Kindes zurück, das beendet wurde, -1 im Fehlerfall, oder 0, wenn WNOHANG
verwendet wurde und kein Kind verfügbar war.