<?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="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">
   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">
     <p 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>.
     </p>
    </li>
    <li class="listitem">
     <p 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>.
     </p>
    </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>
     <p class="simpara">
      Los argumentos <code class="parameter">idtype</code> y <code class="parameter">id</code>
      se utilizan para especificar qué hijos esperar.
     </p>
     <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="simpara">
      El parámetro <code class="parameter">resource_usage</code> se establece en un
      <span class="type"><a href="language.types.array.php" class="type array">array</a></span> asociativo que contiene estadísticas de uso de
      recursos del proceso hijo. Para el detalle de su contenido, véase
      <span class="function"><a href="function.getrusage.php" class="function">getrusage()</a></span>.
     </p>
     <p class="simpara">
      Esto solo se admite si la llamada al sistema
      <code class="literal">wait6(2)</code> está disponible, por ejemplo en FreeBSD, o en
      Linux a través de la llamada al sistema <code class="literal">waitid(2)</code> en
      bruto; en caso contrario, el parámetro se deja sin modificar.
     </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">Véase 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); ?>