<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.pcntl.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.pcntl-waitid.php',
    1 => 'pcntl_waitid',
    2 => 'Attends qu\'un processus enfant change d\'&eacute;tat',
  ),
  'up' => 
  array (
    0 => 'ref.pcntl.php',
    1 => 'Fonctions PCNTL',
  ),
  'prev' => 
  array (
    0 => 'function.pcntl-wait.php',
    1 => 'pcntl_wait',
  ),
  'next' => 
  array (
    0 => 'function.pcntl-waitpid.php',
    1 => 'pcntl_waitpid',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/pcntl/functions/pcntl-waitid.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.pcntl-waitid" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">pcntl_waitid</h1>
  <p class="verinfo">(PHP 8 &gt;= 8.4.0)</p><p class="refpurpose"><span class="refname">pcntl_waitid</span> &mdash; <span class="dc-title">Attends qu&#039;un processus enfant change d&#039;état</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.pcntl-waitid-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">function</span> <span class="methodname"><strong>pcntl_waitid</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$idtype</code><span class="initializer"> = <strong><code><a href="pcntl.constants.php#constant.p-all">P_ALL</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></span> <code class="parameter">$id</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter reference">&$info</code><span class="initializer"> = []</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$flags</code><span class="initializer"> = <strong><code><a href="pcntl.constants.php#constant.wexited">WEXITED</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter reference">&$resource_usage</code><span class="initializer"> = []</span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   Récupère les informations de statut relatives à la terminaison, l&#039;arrêt et/ou la
   poursuite d&#039;un des processus enfant du processus appelant.
  </p>

  <p class="para">
   Sauf si le drapeau <strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong> est passé, le processus appelant
   sera bloqué jusqu&#039;à ce qu&#039;une erreur survienne, ou que des informations de
   status deviennent disponibles qui satisfont toutes les conditions suivantes :
   <ul class="itemizedlist">
    <li class="listitem">
     <p class="simpara">
      Le status de l&#039;information provient d&#039;un des processus enfant dans l&#039;ensemble
      des processus enfants spécifiés par les arguments <code class="parameter">idtype</code>
      et <code class="parameter">id</code>.
     </p>
    </li>
    <li class="listitem">
     <p class="simpara">
      Le changement d&#039;état dans l&#039;information de statut correspond à un des drapeaux
      de changement d&#039;état définis dans l&#039;argument <code class="parameter">flags</code>.
     </p>
    </li>
   </ul>
  </p>

  <p class="para">
   Si des informations de statut correspondantes sont disponibles avant l&#039;appel à
   <span class="function"><strong>pcntl_waitid()</strong></span>, le retour sera immédiat. Si des informations
   de statut correspondantes sont disponibles pour deux processus enfants ou plus,
   l&#039;ordre dans lequel leur statut est rapporté est indéterminé.
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Cette documentation couvre la spécification POSIX de la fonction
    <code class="literal">waitid</code>, avec quelques paramètres supplémentaires spécifiques
    aux implémentations sur Linux, NetBSD et FreeBSD. Consulter la page
    manuel du système <code class="literal">waitid(2)</code> pour des détails spécifiques
    sur le fonctionnement de <code class="literal">waitid</code> sur le système.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.pcntl-waitid-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">idtype</code></dt>
    <dt><code class="parameter">id</code></dt>
    <dd>
     <p class="simpara">
      Les arguments <code class="parameter">idtype</code> et <code class="parameter">id</code> sont
      utilisés pour spécifier quels enfants attendre.
     </p>
     <table class="doctable table">
      <caption><strong>Argument standard POSIX <code class="parameter">idtype</code> et <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>Si <code class="parameter">idtype</code> est <code class="literal">P_ALL</code></td>
         <td>
          attend n&#039;importe quel processus enfant, <code class="parameter">id</code> est ignoré.
         </td>
        </tr>

        <tr>
         <td>Si <code class="parameter">idtype</code> est <code class="literal">P_PID</code></td>
         <td>
          attend le processus enfant avec l&#039;identifiant de processus égal à <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>Si <code class="parameter">idtype</code> est <code class="literal">P_PGID</code></td>
         <td>
          attend n&#039;importe quel processus enfant avec l&#039;identifiant de groupe de processus égal à <code class="parameter">id</code>.
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Arguments spécifiques à Linux <code class="parameter">idtype</code> et <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>Si <code class="parameter">idtype</code> est <code class="literal">P_PIDFD</code> (depuis Linux 5.4)</td>
         <td>
          attend le processus enfant référencé par le descripteur de fichier PID spécifié dans
          <code class="parameter">id</code>.
          (Voir la page manuel Linux <code class="literal">pidfd_open(2)</code> pour plus d&#039;informations
          sur les descripteurs de fichier PID.)
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Arguments spécifiques à NetBSD et FreeBSD <code class="parameter">idtype</code> et <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>
          Si <code class="parameter">idtype</code> est <code class="literal">P_UID</code>
         </td>
         <td>
          attend les processus dont l&#039;identifiant d&#039;utilisateur effectif est égal à
          <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>
          Si <code class="parameter">idtype</code> est <code class="literal">P_GID</code>
         </td>
         <td>
          attend les processus dont l&#039;identifiant de groupe effectif est égal à
          <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>
          Si <code class="parameter">idtype</code> est <code class="literal">P_SID</code>
         </td>
         <td>
          attend les processus dont l&#039;identifiant de session est égal à
          <code class="parameter">id</code>.
          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&#039;identifiant de session
          d&#039;un processus enfant correspondra à l&#039;identifiant de session de l&#039;appelant.
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Arguments spécifiques à FreeBSD <code class="parameter">idtype</code> et <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>
          Si <code class="parameter">idtype</code> est <code class="literal">P_JAILID</code>
         </td>
         <td>
          attend les processus dans une prison dont l&#039;identifiant de prison est égal à
          <code class="parameter">id</code>.
         </td>
        </tr>

       </tbody>
      
     </table>

    </dd>
   
   
    <dt><code class="parameter">info</code></dt>
    <dd>
     <p class="para">
      Le paramètre <code class="parameter">info</code> est défini comme un tableau
      contenant des informations sur le signal.
     </p>
     <p class="para">
      <code class="parameter">info</code> peut contenir les clés suivantes :
      <ul class="simplelist">
       <li><code class="literal">signo</code>: Nombre du signal</li>
       <li><code class="literal">errno</code>: Numéro d'erreur système</li>
       <li><code class="literal">code</code>: Code de signal</li>
       <li><code class="literal">status</code>: Valeur de sortie ou signal</li>
       <li><code class="literal">pid</code>: ID du processus envoyant</li>
       <li><code class="literal">uid</code>: ID utilisateur réel du processus envoyant</li>
       <li><code class="literal">utime</code>: Temps utilisateur consommé</li>
        <li><code class="literal">stime</code>: Temps système consommé</li>
      </ul>
     </p>
    </dd>
   
   
    <dt><code class="parameter">flags</code></dt>
    <dd>
     <p class="para">
      La valeur de <code class="parameter">flags</code> est la valeur de zéro ou plusieurs
      des constantes suivantes mise ensemble :
      <table class="doctable table">
       <caption><strong>Valeurs possibles pour <code class="parameter">flags</code></strong></caption>
       
        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wcontinued">WCONTINUED</a></code></strong></td>
          <td>
           Le statut sera retourné pour tout processus enfant continué dont le statut
           n&#039;a pas été rapporté depuis qu&#039;il a continué à partir d&#039;un arrêt de contrôle
           de travail ou n&#039;a été rapporté que par des appels à
           <span class="function"><strong>pcntl_waitid()</strong></span> avec le drapeau
           <strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong> défini.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wexited">WEXITED</a></code></strong></td>
          <td>
           Attend les processus qui ont terminé.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong></td>
          <td>
           Ne pas bloquer si aucun statut n&#039;est disponible ; retourner immédiatement.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong></td>
          <td>
           Garde le processus dont le statut est retourné dans
           <code class="parameter">info</code> dans un état attendu. Cela n&#039;affectera pas
           l&#039;état du processus ; le processus peut être attendu à nouveau après
           que cet appel soit terminé.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wstopped">WSTOPPED</a></code></strong></td>
          <td>
           Le statut sera retourné pour tout processus enfant arrêté dont le statut
           n&#039;a pas été rapporté depuis qu&#039;il a été arrêté ou n&#039;a été
           rapporté que par des appels à
           <span class="function"><strong>pcntl_waitid()</strong></span> avec le drapeau
           <strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong> défini.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>
    </dd>
   
   
    <dt><code class="parameter">resource_usage</code></dt>
    <dd>
     <p class="simpara">
      Le paramètre <code class="parameter">resource_usage</code> est défini sur un
      <span class="type"><a href="language.types.array.php" class="type array">array</a></span> associatif contenant les statistiques d&#039;utilisation
      des ressources du processus enfant. Pour le détail de son contenu, voir
      <span class="function"><a href="function.getrusage.php" class="function">getrusage()</a></span>.
     </p>
     <p class="simpara">
      Ceci n&#039;est pris en charge que si l&#039;appel système
      <code class="literal">wait6(2)</code> est disponible, par exemple sur FreeBSD, ou
      sur Linux via l&#039;appel système brut <code class="literal">waitid(2)</code> ; sinon,
      le paramètre est laissé inchangé.
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.pcntl-waitid-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   <span class="function"><strong>pcntl_waitid()</strong></span> retourne <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> si le drapeau
   <strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong> a été spécifié et que le statut n&#039;est pas
   disponible pour un des processus spécifiés par <code class="parameter">idtype</code>
   et <code class="parameter">id</code>.
  </p>

  <p class="para">
   <span class="function"><strong>pcntl_waitid()</strong></span> renvoie <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en raison du changement
   de l&#039;état de l&#039;un de ses enfants.
  </p>

  <p class="para">
   Sinon <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> est retourné et <span class="function"><a href="function.pcntl-get-last-error.php" class="function">pcntl_get_last_error()</a></span>
   peut être utilisé pour obtenir le numéro d&#039;erreur <code class="literal">errno</code>.
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Une fois qu&#039;un numéro d&#039;erreur <code class="literal">errno</code> a été obtenu,
    <span class="function"><a href="function.pcntl-strerror.php" class="function">pcntl_strerror()</a></span> peut être utilisé pour obtenir le message
    texte associé.
   </p>
  </p></blockquote>
 </div>


  <div class="refsect1 errors" id="refsect1-function.pcntl-waitid-errors">
  <h3 class="title">Erreurs / Exceptions</h3>
  <table class="doctable table">
   <caption><strong>Valeurs d&#039;erreur numéro (<code class="literal">errno</code>)</strong></caption>
   
    <tbody class="tbody">
     <tr>
      <td><strong><code>ECHILD</code></strong></td>
      <td>
       Le processus appelant n&#039;a pas de processus non attendu enfant.
      </td>
     </tr>

     <tr>
      <td><strong><code>EINTR</code></strong></td>
      <td>
       <span class="function"><strong>pcntl_waitid()</strong></span> a été interrompu par un signal.
      </td>
     </tr>

     <tr>
      <td><strong><code>EINVAL</code></strong></td>
      <td>
       Une valeur invalide a été spécifiée pour <code class="parameter">flags</code>, ou
       <code class="parameter">idtype</code> et <code class="parameter">id</code> spécifient un
       ensemble invalide de processus.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 changelog" id="refsect1-function.pcntl-waitid-changelog">
  <h3 class="title">Historique</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.5.0</td>
      <td>
       <code class="parameter">resource_usage</code> a été ajouté.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.pcntl-waitid-seealso">
  <h3 class="title">Voir aussi</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.pcntl-waitpid.php" class="function" rel="rdfs-seeAlso">pcntl_waitpid()</a> - Attend la fin de l'ex&eacute;cution d'un processus fils</span></li>
    <li><span class="function"><a href="function.pcntl-wait.php" class="function" rel="rdfs-seeAlso">pcntl_wait()</a> - Attend ou retourne le statut d'un processus fils</span></li>
    <li><span class="function"><a href="function.pcntl-fork.php" class="function" rel="rdfs-seeAlso">pcntl_fork()</a> - Duplique le processus courant</span></li>
    <li><span class="function"><a href="function.pcntl-signal.php" class="function" rel="rdfs-seeAlso">pcntl_signal()</a> - Installe un gestionnaire de signaux</span></li>
    <li><span class="function"><a href="function.pcntl-wifexited.php" class="function" rel="rdfs-seeAlso">pcntl_wifexited()</a> - V&eacute;rifie si le code de retour repr&eacute;sente une fin normale</span></li>
    <li><span class="function"><a href="function.pcntl-wifstopped.php" class="function" rel="rdfs-seeAlso">pcntl_wifstopped()</a> - Retourne true si le processus fils est stopp&eacute;</span></li>
    <li><span class="function"><a href="function.pcntl-wifsignaled.php" class="function" rel="rdfs-seeAlso">pcntl_wifsignaled()</a> - Retourne true si le code statut repr&eacute;sente une fin due &agrave; un signal</span></li>
    <li><span class="function"><a href="function.pcntl-wexitstatus.php" class="function" rel="rdfs-seeAlso">pcntl_wexitstatus()</a> - Retourne le code d'un processus fils termin&eacute;</span></li>
    <li><span class="function"><a href="function.pcntl-wtermsig.php" class="function" rel="rdfs-seeAlso">pcntl_wtermsig()</a> - Retourne le signal qui a provoqu&eacute; la fin du processus fils</span></li>
    <li><span class="function"><a href="function.pcntl-wstopsig.php" class="function" rel="rdfs-seeAlso">pcntl_wstopsig()</a> - Retourne le signal qui a caus&eacute; l'arr&ecirc;t du processus fils</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>