(PHP 8 >= 8.4.0)
pcntl_waitid — Espera a que un proceso hijo cambie de estado
Recupera la información de estado relativa a la terminación, parada y/o continuación de uno de los procesos hijo del proceso llamante.
Salvo que se pase el flag WNOHANG
, el proceso llamante será bloqueado hasta que ocurra un error, o que la información de estado se vuelva disponible y satisfaga todas las condiciones siguientes:
idtype
y id
.
flags
.
Si la información de estado correspondiente está disponible antes de la llamada a pcntl_waitid(), el retorno será inmediato. Si la información de estado correspondiente está disponible para dos o más procesos hijo, el orden en el que se reporta su estado es indeterminado.
Nota:
Esta documentación cubre la especificación POSIX de la función
waitid
, con algunos parámetros adicionales específicos de las implementaciones en Linux, NetBSD y FreeBSD. Consulte la página del manual de su sistemawaitid(2)
para obtener detalles específicos sobre el funcionamiento dewaitid
en su sistema.
idtype
id
idtype
y id
se utilizan para especificar qué hijos esperar.
Si idtype es P_ALL |
espera cualquier proceso hijo, id es ignorado.
|
Si idtype es P_PID |
espera el proceso hijo con el identificador de proceso igual a id .
|
Si idtype es P_PGID |
espera cualquier proceso hijo con el identificador de grupo de procesos igual a id .
|
Si idtype es P_PIDFD (desde Linux 5.4) |
espera el proceso hijo referenciado por el descriptor de fichero PID especificado en id . (Vea la página del manual de Linux pidfd_open(2) para más información sobre los descriptores de fichero PID.)
|
Si idtype es P_UID
|
espera los procesos cuyo identificador de usuario efectivo es igual a id .
|
Si idtype es P_GID
|
espera los procesos cuyo identificador de grupo efectivo es igual a id .
|
Si idtype es P_SID
|
espera los procesos cuyo identificador de sesión es igual a id . Si el proceso hijo ha iniciado su propia sesión, su identificador de sesión será el mismo que su identificador de proceso. De lo contrario, el identificador de sesión de un proceso hijo corresponderá al identificador de sesión del llamante.
|
Si idtype es P_JAILID
|
espera los procesos en una prisión cuyo identificador de prisión es igual a id .
|
info
El parámetro info
se define como un array que contiene información sobre la señal.
info
puede contener las siguientes claves:
signo
: Número de la señalerrno
: Número de error del sistemacode
: Código de señalstatus
: Valor de salida o señalpid
: ID del proceso que envíauid
: ID de usuario real del proceso que envíautime
: Tiempo de usuario consumidostime
: Tiempo de sistema consumidoflags
El valor de flags
es el valor de cero o más de las siguientes constantes juntas:
WCONTINUED |
El estado será devuelto para cualquier proceso hijo continuado cuyo estado no haya sido reportado desde que continuó desde una parada de control de trabajo o solo haya sido reportado por llamadas a pcntl_waitid() con el flag WNOWAIT definido.
|
WEXITED |
Espera los procesos que han terminado. |
WNOHANG |
No bloquear si no hay estado disponible; devolver inmediatamente. |
WNOWAIT |
Mantiene el proceso cuyo estado es devuelto en info en un estado esperado. Esto no afectará el estado del proceso; el proceso puede ser esperado de nuevo después de que esta llamada termine.
|
WSTOPPED |
El estado será devuelto para cualquier proceso hijo parado cuyo estado no haya sido reportado desde que fue parado o solo haya sido reportado por llamadas a pcntl_waitid() con el flag WNOWAIT definido.
|
pcntl_waitid() devuelve true
si el flag WNOHANG
ha sido especificado y el estado no está disponible para uno de los procesos especificados por idtype
y id
.
pcntl_waitid() devuelve true
debido al cambio de estado de uno de sus hijos.
De lo contrario, false
es devuelto y pcntl_get_last_error() puede ser utilizado para obtener el número de error errno
.
Nota:
Una vez que se obtiene un número de error
errno
, pcntl_strerror() puede ser utilizado para obtener el mensaje de texto asociado.
ECHILD |
El proceso llamante no tiene ningún proceso hijo no esperado. |
EINTR |
pcntl_waitid() ha sido interrumpido por una señal. |
EINVAL |
Se ha especificado un valor inválido para flags , o idtype y id especifican un conjunto inválido de procesos.
|