<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.pcntl-waitid.php',
    1 => 'pcntl_waitid',
    2 => 'Espera a que un proceso hijo cambie de estado',
  ),
  'up' => 
  array (
    0 => 'ref.pcntl.php',
    1 => 'Funciones 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' => 'es',
    '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">Espera a que un proceso hijo cambie de estado</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.pcntl-waitid-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <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">
   Obtiene información de estado relacionada con eventos de terminación, parada
   y/o continuación en uno de los procesos hijos del llamador.
  </p>

  <p class="para">
   A menos que se pase el flag <strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong>, el proceso que llama
   quedará bloqueado hasta que ocurra un error, o hasta que la información de
   estado sea disponible y cumpla con todas las siguientes condiciones:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      La información de estado proviene de uno de los procesos hijos en el conjunto
      de procesos hijos especificado por los argumentos <code class="parameter">idtype</code>
      y <code class="parameter">id</code>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      El cambio de estado en la información de estado coincide con uno de los
      flags de cambio de estado establecidos en el argumento <code class="parameter">flags</code>.
     </span>
    </li>
   </ul>
  </p>

  <p class="para">
   Si la información de estado coincidente está disponible antes de la llamada a
   <span class="function"><strong>pcntl_waitid()</strong></span>, el retorno será inmediato. Si la información
   de estado coincidente está disponible para dos o más procesos hijos, el orden
   en que se informa su estado no está especificado.
  </p>

  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Esta documentación cubre la especificación POSIX de la función
    <code class="literal">waitid</code>, junto con algunos parámetros adicionales
    específicos de las implementaciones en Linux, NetBSD y FreeBSD. Consulte la
    página del manual <code class="literal">waitid(2)</code> de su sistema para obtener
    detalles específicos sobre cómo funciona <code class="literal">waitid</code> en su sistema.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.pcntl-waitid-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">idtype</code></dt>
    <dt><code class="parameter">id</code></dt>
    <dd>
     <span class="simpara">
      Los argumentos <code class="parameter">idtype</code> y <code class="parameter">id</code>
      se utilizan para especificar qué hijos esperar.
     </span>
     <table class="doctable table">
      <caption><strong>Argumentos estándar POSIX <code class="parameter">idtype</code> y <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>Si <code class="parameter">idtype</code> es <code class="literal">P_ALL</code></td>
         <td>
          esperar cualquier proceso hijo, <code class="parameter">id</code> se ignora.
         </td>
        </tr>

        <tr>
         <td>Si <code class="parameter">idtype</code> es <code class="literal">P_PID</code></td>
         <td>
          esperar al hijo con ID de proceso igual a <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>Si <code class="parameter">idtype</code> es <code class="literal">P_PGID</code></td>
         <td>
          esperar cualquier hijo con ID de grupo de procesos igual a <code class="parameter">id</code>.
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Argumentos específicos de Linux <code class="parameter">idtype</code> y <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>Si <code class="parameter">idtype</code> es <code class="literal">P_PIDFD</code> (desde Linux 5.4)</td>
         <td>
          esperar al hijo referenciado por el descriptor de archivo PID especificado en
          <code class="parameter">id</code>.
          (Consulte la página del manual de Linux <code class="literal">pidfd_open(2)</code> para obtener
          más información sobre los descriptores de archivo PID.)
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Argumentos específicos de NetBSD y FreeBSD <code class="parameter">idtype</code> y <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>
          Si <code class="parameter">idtype</code> es <code class="literal">P_UID</code>
         </td>
         <td>
          esperar procesos cuyo ID de usuario efectivo es igual a
          <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>
          Si <code class="parameter">idtype</code> es <code class="literal">P_GID</code>
         </td>
         <td>
          esperar procesos cuyo ID de grupo efectivo es igual a
          <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>
          Si <code class="parameter">idtype</code> es <code class="literal">P_SID</code>
         </td>
         <td>
          esperar procesos cuya ID de sesión es igual a
          <code class="parameter">id</code>.
          Si el proceso hijo inició su propia sesión, su ID de sesión será
          igual a su ID de proceso. De lo contrario, la ID de sesión de un
          proceso hijo coincidirá con la ID de sesión del llamador.
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Argumentos específicos de FreeBSD <code class="parameter">idtype</code> y <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>
          Si <code class="parameter">idtype</code> es <code class="literal">P_JAILID</code>
         </td>
         <td>
          esperar procesos dentro de una cárcel cuya identificador de cárcel es igual a
          <code class="parameter">id</code>.
         </td>
        </tr>

       </tbody>
      
     </table>

    </dd>
   
   
    <dt><code class="parameter">info</code></dt>
    <dd>
     <p class="para">
      El parámetro <code class="parameter">info</code> se establece en un array
      que contiene información sobre la señal.
     </p>
     <p class="para">
      El array <code class="parameter">info</code> puede contener las siguientes claves:
      <ul class="simplelist">
       <li><code class="literal">signo</code>: Número de señal</li>
       <li><code class="literal">errno</code>: Número de error del sistema</li>
       <li><code class="literal">code</code>: Código de señal</li>
       <li><code class="literal">status</code>: Valor de salida o señal</li>
       <li><code class="literal">pid</code>: ID del proceso emisor</li>
       <li><code class="literal">uid</code>: ID de usuario real del proceso emisor</li>
       <li><code class="literal">utime</code>: Tiempo de usuario consumido</li>
       <li><code class="literal">stime</code>: Tiempo de sistema consumido</li>
      </ul>
     </p>
    </dd>
   
   
    <dt><code class="parameter">flags</code></dt>
    <dd>
     <p class="para">
      El valor de <code class="parameter">flags</code> es el valor de cero o más de
      las siguientes constantes combinadas con OR:
      <table class="doctable table">
       <caption><strong>Valores posibles para <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>
           Se devolverá el estado de cualquier proceso hijo continuado cuyo
           estado no ha sido reportado desde que continuó de una parada por
           control de trabajos o ha sido reportado solo por llamadas a
           <span class="function"><strong>pcntl_waitid()</strong></span> con el flag
           <strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong> establecido.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wexited">WEXITED</a></code></strong></td>
          <td>
           Esperar procesos que han finalizado.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong></td>
          <td>
           No bloquear si no hay estado disponible; devolver inmediatamente.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong></td>
          <td>
           Mantener el proceso cuyo estado se devuelve en
           <code class="parameter">info</code> en un estado esperable. Esto no
           afectará el estado del proceso; el proceso puede ser esperado de nuevo
           después de que esta llamada se complete.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wstopped">WSTOPPED</a></code></strong></td>
          <td>
           Se devolverá el estado de cualquier hijo que se haya detenido al
           recibir una señal, y cuyo estado no ha sido reportado desde que se
           detuvo o ha sido reportado solo por llamadas a
           <span class="function"><strong>pcntl_waitid()</strong></span> con el flag
           <strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong> establecido.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>
    </dd>
   
   
    <dt><code class="parameter">resource_usage</code></dt>
    <dd>
     <p class="para">
      El parámetro <code class="parameter">resource_usage</code> se establece en un array
      que contiene estadísticas de uso de recursos del proceso hijo.

      Esto se admite ya sea si la llamada al sistema wait6 está disponible
      (por ejemplo, en FreeBSD), o en Linux a través de la llamada al sistema
      waitid en bruto.
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.pcntl-waitid-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   <span class="function"><strong>pcntl_waitid()</strong></span> devuelve <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> si
   <strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong> fue especificado y no hay estado disponible para
   ningún proceso especificado por <code class="parameter">idtype</code> y
   <code class="parameter">id</code>.
  </p>

  <p class="para">
   <span class="function"><strong>pcntl_waitid()</strong></span> devuelve <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> debido al cambio de estado
   de uno de sus hijos.
  </p>

  <p class="para">
   De lo contrario, se devuelve <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> y <span class="function"><a href="function.pcntl-get-last-error.php" class="function">pcntl_get_last_error()</a></span>
   puede usarse para obtener el número de error <code class="literal">errno</code>.
  </p>

  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Una vez obtenido un número de error <code class="literal">errno</code>,
    <span class="function"><a href="function.pcntl-strerror.php" class="function">pcntl_strerror()</a></span> puede usarse para obtener el mensaje de
    texto asociado a él.
   </p>
  </p></blockquote>
 </div>


  <div class="refsect1 errors" id="refsect1-function.pcntl-waitid-errors">
  <h3 class="title">Errores/Excepciones</h3>
  <table class="doctable table">
   <caption><strong>Valores del número de error (<code class="literal">errno</code>)</strong></caption>
   
    <tbody class="tbody">
     <tr>
      <td><strong><code>ECHILD</code></strong></td>
      <td>
       El proceso que llama no tiene procesos hijos no esperados existentes.
      </td>
     </tr>

     <tr>
      <td><strong><code>EINTR</code></strong></td>
      <td>
       <span class="function"><strong>pcntl_waitid()</strong></span> fue interrumpido por una señal.
      </td>
     </tr>

     <tr>
      <td><strong><code>EINVAL</code></strong></td>
      <td>
       Se especificó un valor no válido para <code class="parameter">flags</code>, o
       <code class="parameter">idtype</code> y <code class="parameter">id</code> especifican un
       conjunto no válido de procesos.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 changelog" id="refsect1-function.pcntl-waitid-changelog">
  <h3 class="title">Historial de cambios</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versión</th>
      <th>Descripción</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.5.0</td>
      <td>
       Se ha añadido <code class="parameter">resource_usage</code>.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.pcntl-waitid-seealso">
  <h3 class="title">Ver también</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> - Espera la finalizaci&oacute;n de la ejecuci&oacute;n de un proceso hijo</span></li>
    <li><span class="function"><a href="function.pcntl-wait.php" class="function" rel="rdfs-seeAlso">pcntl_wait()</a> - Espera o devuelve el estado de un proceso hijo</span></li>
    <li><span class="function"><a href="function.pcntl-fork.php" class="function" rel="rdfs-seeAlso">pcntl_fork()</a> - Duplica el proceso actual</span></li>
    <li><span class="function"><a href="function.pcntl-signal.php" class="function" rel="rdfs-seeAlso">pcntl_signal()</a> - Instala un gestor de se&ntilde;ales</span></li>
    <li><span class="function"><a href="function.pcntl-wifexited.php" class="function" rel="rdfs-seeAlso">pcntl_wifexited()</a> - Verifica si el c&oacute;digo de retorno representa una finalizaci&oacute;n normal</span></li>
    <li><span class="function"><a href="function.pcntl-wifstopped.php" class="function" rel="rdfs-seeAlso">pcntl_wifstopped()</a> - Devuelve true si el proceso hijo est&aacute; detenido</span></li>
    <li><span class="function"><a href="function.pcntl-wifsignaled.php" class="function" rel="rdfs-seeAlso">pcntl_wifsignaled()</a> - Verifica si el c&oacute;digo de estado representa una terminaci&oacute;n debido a una se&ntilde;al</span></li>
    <li><span class="function"><a href="function.pcntl-wexitstatus.php" class="function" rel="rdfs-seeAlso">pcntl_wexitstatus()</a> - Devuelve el c&oacute;digo de un proceso hijo terminado</span></li>
    <li><span class="function"><a href="function.pcntl-wtermsig.php" class="function" rel="rdfs-seeAlso">pcntl_wtermsig()</a> - Devuelve la se&ntilde;al que caus&oacute; el t&eacute;rmino del proceso hijo</span></li>
    <li><span class="function"><a href="function.pcntl-wstopsig.php" class="function" rel="rdfs-seeAlso">pcntl_wstopsig()</a> - Devuelve la se&ntilde;al que caus&oacute; la detenci&oacute;n del proceso hijo</span></li>
   </ul>
  </p>
 </div>


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