<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'function.pcntl-waitid.php',
    1 => 'pcntl_waitid',
    2 => 'Aguarda que um processo filho mude de estado',
  ),
  'up' => 
  array (
    0 => 'ref.pcntl.php',
    1 => 'Fun&ccedil;&otilde;es 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' => 'pt_BR',
    '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">Aguarda que um processo filho mude de estado</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.pcntl-waitid-description">
  <h3 class="title">Descrição</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">
   Obtém informações de status referentes a eventos de término, parada e/ou continuação
   em um dos processos filhos do chamador.
  </p>

  <p class="para">
   A menos que o sinalizador <strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong> seja passado, o processo de chamada ficará
   bloqueado até que ocorra um erro ou informações de status fiquem
   disponíveis, satisfazendo todos os seguintes:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      As informações de status são de um dos processos filhos no conjunto de
      processos filhos especificados pelos argumentos <code class="parameter">idtype</code> e
      <code class="parameter">id</code>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      A mudança de estado nas informações de status corresponde a um dos sinalizadores de mudança de estado
      definidos no argumento <code class="parameter">flags</code>.
     </span>
    </li>
   </ul>
  </p>

  <p class="para">
   Se informações de status correspondentes estiverem disponíveis antes da chamada a
   <span class="function"><strong>pcntl_waitid()</strong></span>, o retorno será imediato. Se informações
   de status correspondentes estiverem disponíveis para dois ou mais processos filhos, a ordem
   em que seus status são relatados não é especificada.
  </p>

  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Esta documentação abrange a especificação POSIX da
    função <code class="literal">waitid</code>, juntamente com alguns parâmetros adicionais
    específicos para implementações em Linux, NetBSD e FreeBSD. Consulte a
    página de manual <code class="literal">waitid(2)</code> do sistema operacional para obter detalhes específicos sobre
    como <code class="literal">waitid</code> funciona.
   </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">
      Os argumentos <code class="parameter">idtype</code> e <code class="parameter">id</code>
      são usados ​​para especificar quais filhos esperar.
     </span>
     <table class="doctable table">
      <caption><strong>Padrão POSIX para argumentos <code class="parameter">idtype</code> e <code class="parameter">id</code></strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>Se <code class="parameter">idtype</code> for <code class="literal">P_ALL</code></td>
         <td>
          espera por qualquer processo filho, <code class="parameter">id</code> é ignorado.
         </td>
        </tr>

        <tr>
         <td>Se <code class="parameter">idtype</code> for <code class="literal">P_PID</code></td>
         <td>
          espera pelo processo filho com ID de processo igual a <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>Se <code class="parameter">idtype</code> for <code class="literal">P_PGID</code></td>
         <td>
          espera por qualquer processo filho com ID de grupo de processo igual a <code class="parameter">id</code>.
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Argumentos <code class="parameter">idtype</code> e <code class="parameter">id</code> específicos para Linux</strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>Se <code class="parameter">idtype</code> for <code class="literal">P_PIDFD</code> (desde o Linux 5.4)</td>
         <td>
          espera pelo processo filho referido pelo descritor de arquivo PID especificado em
          <code class="parameter">id</code>.
          (Consulte a página de manual do Linux <code class="literal">pidfd_open(2)</code> para obter mais
          informações sobre descritores de arquivo PID.)
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Argumentos <code class="parameter">idtype</code> e <code class="parameter">id</code> específicos do NetBSD e FreeBSD</strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>
          Se <code class="parameter">idtype</code> for <code class="literal">P_UID</code>
         </td>
         <td>
          aguarda processos cujo ID de usuário efetivo seja igual a
          <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>
          Se <code class="parameter">idtype</code> for <code class="literal">P_GID</code>
         </td>
         <td>
          aguarda processos cujo ID de grupo efetivo seja igual a
          <code class="parameter">id</code>.
         </td>
        </tr>

        <tr>
         <td>
          Se <code class="parameter">idtype</code> for <code class="literal">P_SID</code>
         </td>
         <td>
          aguarda processos cujo ID de sessão seja igual a
          <code class="parameter">id</code>.
          Se o processo filho iniciou sua própria sessão, seu ID de sessão será
          o mesmo que seu ID de processo. Caso contrário, o ID de sessão de um processo
          filho corresponderá ao ID de sessão do chamador.
         </td>
        </tr>

       </tbody>
      
     </table>

     <table class="doctable table">
      <caption><strong>Argumentos <code class="parameter">idtype</code> e <code class="parameter">id</code> específicos do FreeBSD</strong></caption>
      
       <tbody class="tbody">
        <tr>
         <td>
          Se <code class="parameter">idtype</code> for <code class="literal">P_JAILID</code>
         </td>
         <td>
          aguarda processos dentro de uma &quot;jail&quot; cujo identificador de &quot;jail&quot; seja igual a
          <code class="parameter">id</code>.
         </td>
        </tr>

       </tbody>
      
     </table>

    </dd>
   
   
    <dt><code class="parameter">info</code></dt>
    <dd>
     <p class="para">
      O parâmetro <code class="parameter">info</code> é definido como um array
      contendo informações sobre o sinal.
     </p>
     <p class="para">
      O array <code class="parameter">info</code> pode conter as seguintes chaves:
      <ul class="simplelist">
       <li><code class="literal">signo</code>: Número do sinal</li>
       <li><code class="literal">errno</code>: Número do erro do sistema</li>
       <li><code class="literal">code</code>: Código do sinal</li>
       <li><code class="literal">status</code>: Valor ou sinal de saída</li>
       <li><code class="literal">pid</code>: ID do processo que envia</li>
       <li><code class="literal">uid</code>: ID do usuário real do processo que envia</li>
       <li><code class="literal">utime</code>: Tempo do usuário consumido</li>
       <li><code class="literal">stime</code>: Tempo do sistema consumido</li>
      </ul>
     </p>
    </dd>
   
   
    <dt><code class="parameter">flags</code></dt>
    <dd>
     <p class="para">
      O valor de <code class="parameter">flags</code> é o valor de zero ou mais das
      seguintes constantes combinadas com OR:
      <table class="doctable table">
       <caption><strong>Valores possíveis 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>
           O status deve ser retornado para qualquer processo filho continuado cujo
           status não tenha sido relatado desde que continuou a partir de uma parada
           de controle de tarefa ou tenha sido relatado apenas por chamadas a
           <span class="function"><strong>pcntl_waitid()</strong></span> com o
           sinalizador <strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong> definido.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wexited">WEXITED</a></code></strong></td>
          <td>
           Aguarda processos que foram encerrados.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong></td>
          <td>
           Não trava se nenhum status estiver disponível; retorna imediatamente.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong></td>
          <td>
           Mantém o processo cujo status é retornado em
           <code class="parameter">info</code> em um estado de espera. Isso não deve
           afetar o estado do processo; o processo pode ser aguardado novamente
           após a conclusão desta chamada.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="pcntl.constants.php#constant.wstopped">WSTOPPED</a></code></strong></td>
          <td>
           O status deve ser retornado para qualquer processo filho que tenha parado ao receber
           um sinal e cujo status não tenha sido relatado desde
           sua parada ou tenha sido relatado apenas por chamadas a
           <span class="function"><strong>pcntl_waitid()</strong></span> com o sinalizador
           <strong><code><a href="pcntl.constants.php#constant.wnowait">WNOWAIT</a></code></strong> definido.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>
    </dd>
   
   
    <dt><code class="parameter">resource_usage</code></dt>
    <dd>
     <p class="para">
      O parâmetro <code class="parameter">resource_usage</code> é definido como um array
      que contém estatística de uso de recursos do processo filho.

      Isto é suportado se a chamada de sistema wait6 estiver disponível
      (por exemplo no FreeBSD), ou também no Linux através da chamada de sistema waitid.
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.pcntl-waitid-returnvalues">
  <h3 class="title">Valor Retornado</h3>
  <p class="para">
   <span class="function"><strong>pcntl_waitid()</strong></span> retorna <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> se
   <strong><code><a href="pcntl.constants.php#constant.wnohang">WNOHANG</a></code></strong> foi especificado e o status não está disponível para
   qualquer processo especificado por <code class="parameter">idtype</code> e
   <code class="parameter">id</code>.
  </p>

  <p class="para">
   <span class="function"><strong>pcntl_waitid()</strong></span> retorna <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> devido à mudança de estado
   de um de seus filhos.
  </p>

  <p class="para">
   Caso contrário, <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> é retornado e <span class="function"><a href="function.pcntl-get-last-error.php" class="function">pcntl_get_last_error()</a></span>
   pode ser usado para obter o número do erro <code class="literal">errno</code>.
  </p>

  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Uma vez obtido um número de erro <code class="literal">errno</code>,
    <span class="function"><a href="function.pcntl-strerror.php" class="function">pcntl_strerror()</a></span> pode ser usada para obter a mensagem de texto
    associada a ele.
   </p>
  </p></blockquote>
 </div>


  <div class="refsect1 errors" id="refsect1-function.pcntl-waitid-errors">
  <h3 class="title">Erros/Exceções</h3>
  <table class="doctable table">
   <caption><strong>Valores de número de erro (<code class="literal">errno</code>)</strong></caption>
   
    <tbody class="tbody">
     <tr>
      <td><strong><code>ECHILD</code></strong></td>
      <td>
       O processo de chamada não possui processos filho existentes não aguardados.
      </td>
     </tr>

     <tr>
      <td><strong><code>EINTR</code></strong></td>
      <td>
       <span class="function"><strong>pcntl_waitid()</strong></span> foi interrompido por um sinal.
      </td>
     </tr>

     <tr>
      <td><strong><code>EINVAL</code></strong></td>
      <td>
       Um valor inválido foi especificado para <code class="parameter">flags</code>, ou
       <code class="parameter">idtype</code> e <code class="parameter">id</code> especificam um
       conjunto inválido de processos.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 changelog" id="refsect1-function.pcntl-waitid-changelog">
  <h3 class="title">Registro de Alterações</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versão</th>
      <th>Descrição</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.5.0</td>
      <td>
       <code class="parameter">resource_usage</code> foi adicionado.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.pcntl-waitid-seealso">
  <h3 class="title">Veja Também</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> - Aguarda ou retorna o status de um filho bifurcado</span></li>
    <li><span class="function"><a href="function.pcntl-wait.php" class="function" rel="rdfs-seeAlso">pcntl_wait()</a> - Aguarda ou retorna o status de um filho bifurcado</span></li>
    <li><span class="function"><a href="function.pcntl-fork.php" class="function" rel="rdfs-seeAlso">pcntl_fork()</a> - Bifurca o processo em execu&ccedil;&atilde;o no momento</span></li>
    <li><span class="function"><a href="function.pcntl-signal.php" class="function" rel="rdfs-seeAlso">pcntl_signal()</a> - Instala um manipulador de sinal</span></li>
    <li><span class="function"><a href="function.pcntl-wifexited.php" class="function" rel="rdfs-seeAlso">pcntl_wifexited()</a> - Verifica se o c&oacute;digo de status representa uma sa&iacute;da normal</span></li>
    <li><span class="function"><a href="function.pcntl-wifstopped.php" class="function" rel="rdfs-seeAlso">pcntl_wifstopped()</a> - Verifica se o processo filho est&aacute; parado no momento</span></li>
    <li><span class="function"><a href="function.pcntl-wifsignaled.php" class="function" rel="rdfs-seeAlso">pcntl_wifsignaled()</a> - Verifica se o c&oacute;digo de status representa uma termina&ccedil;&atilde;o devido a um sinal</span></li>
    <li><span class="function"><a href="function.pcntl-wexitstatus.php" class="function" rel="rdfs-seeAlso">pcntl_wexitstatus()</a> - Retorna o c&oacute;digo de retorno de um filho encerrado</span></li>
    <li><span class="function"><a href="function.pcntl-wtermsig.php" class="function" rel="rdfs-seeAlso">pcntl_wtermsig()</a> - Retorna o sinal que causou o t&eacute;rmino do processo filho</span></li>
    <li><span class="function"><a href="function.pcntl-wstopsig.php" class="function" rel="rdfs-seeAlso">pcntl_wstopsig()</a> - Retorna o sinal que fez o processo filho parar</span></li>
   </ul>
  </p>
 </div>


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