pcntl_waitpid
(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
Beschreibung
int
$process_id
,int
&$status
,int
$flags
= 0,array
&$resource_usage
= []): int
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.
Parameter-Liste
-
process_id
-
Der Wert von
process_id
kann einer der Folgenden sein:Mögliche Werte für process_id
< -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 mittelsOR
verknüpften folgenden beiden globalen Konstanten:Mögliche Werte für flags
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.
Rückgabewerte
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.
Siehe auch
- pcntl_fork() - Verzweigt den laufenden Prozess
- pcntl_signal() - Richtet eine Signalverarbeitung ein
- pcntl_wifexited() - Prüft ob der Statuscode ein erfolgreiches Beenden darstellt
- pcntl_wifstopped() - Prüft ob der Kindprozess gerade gestoppt ist
- pcntl_wifsignaled() - Prüft ob der Statuscode eine Terminierung wegen eines Signals angibt
- pcntl_wexitstatus() - Lefert den Statuscode eines beendeten Kindes
- pcntl_wtermsig() - Gibt das Signal zurück, welches das Beenden des Kindes verursachte
- pcntl_wstopsig() - Gibt das Signal zurück, welches das Anhalten des Kindes verursachte