(PHP 8 >= 8.4.0)
pcntl_waitid — Aguarda que um processo filho mude de estado
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 comowaitid
funciona.
idtype
id
idtype
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.
|
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.
|