PHP Conference Nagoya 2025

pcntl_waitid

(PHP 8 >= 8.4.0)

pcntl_waitidAttends qu'un processus enfant change d'état

Description

pcntl_waitid(
    int $idtype = P_ALL,
    int $id = null,
    array &$info = [],
    int $flags = WEXITED
): bool

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 :

  • Le status de l'information provient d'un des processus enfant dans l'ensemble des processus enfants spécifiés par les arguments idtype et id.
  • Le changement d'état dans l'information de statut correspond à un des drapeaux de changement d'état définis dans l'argument 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ème waitid(2) pour des détails spécifiques sur le fonctionnement de waitid sur votre système.

Liste de paramètres

idtype
id
Les arguments idtype et id sont utilisés pour spécifier quels enfants attendre.
Argument standard POSIX idtype et id
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.
Arguments spécifiques à Linux idtype et 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.)
Arguments spécifiques à NetBSD et FreeBSD idtype et id
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.
Arguments spécifiques à FreeBSD idtype et id
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 signal
  • errno: Numéro d'erreur système
  • code: Code de signal
  • status: Valeur de sortie ou signal
  • pid: ID du processus envoyant
  • uid: ID utilisateur réel du processus envoyant
  • utime: 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 :

Valeurs possibles pour flags
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.

Valeurs de retour

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é.

Erreurs / Exceptions

Valeurs d'erreur numéro (errno)
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.

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top