(PHP 8 >= 8.4.0)
pcntl_waitid — Aguarda que um processo filho mude de estado
$idtype = P_ALL,$id = null,&$info = [],$flags = WEXITED,&$resource_usage = []Obtém informações de status referentes a eventos de término, parada e/ou continuação em um dos processos filhos do chamador.
A menos que o sinalizador WNOHANG 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:
idtype e
id.
flags.
Se informações de status correspondentes estiverem disponíveis antes da chamada a pcntl_waitid(), 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.
Nota:
Esta documentação abrange a especificação POSIX da função
waitid, juntamente com alguns parâmetros adicionais específicos para implementações em Linux, NetBSD e FreeBSD. Consulte a página de manualwaitid(2)do sistema operacional para obter detalhes específicos sobre comowaitidfunciona.
idtypeididtype e id
são usados para especificar quais filhos esperar.
Se idtype for P_ALL |
espera por qualquer processo filho, id é ignorado.
|
Se idtype for P_PID |
espera pelo processo filho com ID de processo igual a id.
|
Se idtype for P_PGID |
espera por qualquer processo filho com ID de grupo de processo igual a id.
|
Se idtype for P_PIDFD (desde o Linux 5.4) |
espera pelo processo filho referido pelo descritor de arquivo PID especificado em
id.
(Consulte a página de manual do Linux pidfd_open(2) para obter mais
informações sobre descritores de arquivo PID.)
|
Se idtype for P_UID
|
aguarda processos cujo ID de usuário efetivo seja igual a
id.
|
Se idtype for P_GID
|
aguarda processos cujo ID de grupo efetivo seja igual a
id.
|
Se idtype for P_SID
|
aguarda processos cujo ID de sessão seja igual a
id.
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.
|
Se idtype for P_JAILID
|
aguarda processos dentro de uma "jail" cujo identificador de "jail" seja igual a
id.
|
info
O parâmetro info é definido como um array
contendo informações sobre o sinal.
O array info pode conter as seguintes chaves:
signo: Número do sinalerrno: Número do erro do sistemacode: Código do sinalstatus: Valor ou sinal de saídapid: ID do processo que enviauid: ID do usuário real do processo que enviautime: Tempo do usuário consumidostime: Tempo do sistema consumidoflags
O valor de flags é o valor de zero ou mais das
seguintes constantes combinadas com OR:
WCONTINUED |
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
pcntl_waitid() com o
sinalizador WNOWAIT definido.
|
WEXITED |
Aguarda processos que foram encerrados. |
WNOHANG |
Não trava se nenhum status estiver disponível; retorna imediatamente. |
WNOWAIT |
Mantém o processo cujo status é retornado em
info 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.
|
WSTOPPED |
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
pcntl_waitid() com o sinalizador
WNOWAIT definido.
|
resource_usage
O parâmetro resource_usage é 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.
pcntl_waitid() retorna true se
WNOHANG foi especificado e o status não está disponível para
qualquer processo especificado por idtype e
id.
pcntl_waitid() retorna true devido à mudança de estado
de um de seus filhos.
Caso contrário, false é retornado e pcntl_get_last_error()
pode ser usado para obter o número do erro errno.
Nota:
Uma vez obtido um número de erro
errno, pcntl_strerror() pode ser usada para obter a mensagem de texto associada a ele.
ECHILD |
O processo de chamada não possui processos filho existentes não aguardados. |
EINTR |
pcntl_waitid() foi interrompido por um sinal. |
EINVAL |
Um valor inválido foi especificado para flags, ou
idtype e id especificam um
conjunto inválido de processos.
|