pcntl_waitid

(PHP 8 >= 8.4.0)

pcntl_waitid — Attends qu'un processus enfant change d'Ă©tat

Description

function pcntl_waitid(
    int $idtype = P_ALL,
    ?int $id = null,
    array &$info = [],
    int $flags = WEXITED,
    array &$resource_usage = []
): 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. Consulter la page manuel du systÚme waitid(2) pour des détails spécifiques sur le fonctionnement de waitid sur le 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.
resource_usage

Le paramĂštre resource_usage est dĂ©fini sur un tableau contenant les statistiques d’utilisation des ressources du processus enfant. Ceci est pris en charge soit si l’appel systĂšme wait6 est disponible (par exemple sur FreeBSD), soit sur Linux via l’appel systĂšme brut waitid.

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.

Historique

Version Description
8.5.0 resource_usage a été ajouté.

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.