(PHP 8 >= 8.4.0)
pcntl_waitid — Attends qu'un processus enfant change d'état
Récupère les informations de statut relatives à la terminaison, l'arrêt et/ou la poursuite d'un des processus enfant du processus appelant.
Sauf si le drapeau WNOHANG
est passé, le processus appelant
sera bloqué jusqu'à ce qu'une erreur survienne, ou que des informations de
status deviennent disponibles qui satisfont toutes les conditions suivantes :
idtype
et id
.
flags
.
Si des informations de statut correspondantes sont disponibles avant l'appel à pcntl_waitid(), le retour sera immédiat. Si des informations de statut correspondantes sont disponibles pour deux processus enfants ou plus, l'ordre dans lequel leur statut est rapporté est indéterminé.
Note:
Cette documentation couvre la spécification POSIX de la fonction
waitid
, avec quelques paramètres supplémentaires spécifiques aux implémentations sur Linux, NetBSD et FreeBSD. Veuillez consulter la page manuel de votre systèmewaitid(2)
pour des détails spécifiques sur le fonctionnement dewaitid
sur votre système.
idtype
id
idtype
et id
sont
utilisés pour spécifier quels enfants attendre.
Si idtype est P_ALL |
attend n'importe quel processus enfant, id est ignoré.
|
Si idtype est P_PID |
attend le processus enfant avec l'identifiant de processus égal à id .
|
Si idtype est P_PGID |
attend n'importe quel processus enfant avec l'identifiant de groupe de processus égal à id .
|
Si idtype est P_PIDFD (depuis Linux 5.4) |
attend le processus enfant référencé par le descripteur de fichier PID spécifié dans
id .
(Voir la page manuel Linux pidfd_open(2) pour plus d'informations
sur les descripteurs de fichier PID.)
|
Si idtype est P_UID
|
attend les processus dont l'identifiant d'utilisateur effectif est égal à
id .
|
Si idtype est P_GID
|
attend les processus dont l'identifiant de groupe effectif est égal à
id .
|
Si idtype est P_SID
|
attend les processus dont l'identifiant de session est égal à
id .
Si le processus enfant a démarré sa propre session, son identifiant de session
sera le même que son identifiant de processus. Sinon, l'identifiant de session
d'un processus enfant correspondra à l'identifiant de session de l'appelant.
|
Si idtype est P_JAILID
|
attend les processus dans une prison dont l'identifiant de prison est égal à
id .
|
info
Le paramètre info
est défini comme un tableau
contenant des informations sur le signal.
info
peut contenir les clés suivantes :
signo
: Nombre du signalerrno
: Numéro d'erreur systèmecode
: Code de signalstatus
: Valeur de sortie ou signalpid
: ID du processus envoyantuid
: ID utilisateur réel du processus envoyantutime
: Temps utilisateur consomméstime
: Temps système consomméflags
La valeur de flags
est la valeur de zéro ou plusieurs
des constantes suivantes mise ensemble :
WCONTINUED |
Le statut sera retourné pour tout processus enfant continué dont le statut
n'a pas été rapporté depuis qu'il a continué à partir d'un arrêt de contrôle
de travail ou n'a été rapporté que par des appels à
pcntl_waitid() avec le drapeau
WNOWAIT défini.
|
WEXITED |
Attend les processus qui ont terminé. |
WNOHANG |
Ne pas bloquer si aucun statut n'est disponible ; retourner immédiatement. |
WNOWAIT |
Garde le processus dont le statut est retourné dans
info dans un état attendu. Cela n'affectera pas
l'état du processus ; le processus peut être attendu à nouveau après
que cet appel soit terminé.
|
WSTOPPED |
Le statut sera retourné pour tout processus enfant arrêté dont le statut
n'a pas été rapporté depuis qu'il a été arrêté ou n'a été
rapporté que par des appels à
pcntl_waitid() avec le drapeau
WNOWAIT défini.
|
pcntl_waitid() retourne true
si le drapeau
WNOHANG
a été spécifié et que le statut n'est pas
disponible pour un des processus spécifiés par idtype
et id
.
pcntl_waitid() renvoie true
en raison du changement
de l'état de l'un de ses enfants.
Sinon false
est retourné et pcntl_get_last_error()
peut être utilisé pour obtenir le numéro d'erreur errno
.
Note:
Une fois qu'un numéro d'erreur
errno
a été obtenu, pcntl_strerror() peut être utilisé pour obtenir le message texte associé.
ECHILD |
Le processus appelant n'a pas de processus non attendu enfant. |
EINTR |
pcntl_waitid() a été interrompu par un signal. |
EINVAL |
Une valeur invalide a été spécifiée pour flags , ou
idtype et id spécifient un
ensemble invalide de processus.
|