PHP Core Undergoes Security Audit – Results Now Available

pcntl_waitid

(PHP 8 >= 8.4.0)

pcntl_waitidEspera a que un proceso hijo cambie de estado

Descripción

pcntl_waitid(
    int $idtype = P_ALL,
    ?int $id = null,
    array &$info = [],
    int $flags = WEXITED
): bool

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:

  • El estado de la información proviene de uno de los procesos hijo en el conjunto de procesos hijo especificados por los argumentos idtype y id.
  • El cambio de estado en la información de estado corresponde a uno de los flags de cambio de estado definidos en el argumento 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 sistema waitid(2) para obtener detalles específicos sobre el funcionamiento de waitid en su sistema.

Parámetros

idtype
id
Los argumentos idtype y id se utilizan para especificar qué hijos esperar.
Argumento estándar POSIX idtype y id
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.
Argumentos específicos de Linux idtype y 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.)
Argumentos específicos de NetBSD y FreeBSD idtype y id
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.
Argumentos específicos de FreeBSD idtype y id
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ñal
  • errno: Número de error del sistema
  • code: Código de señal
  • status: Valor de salida o señal
  • pid: ID del proceso que envía
  • uid: ID de usuario real del proceso que envía
  • utime: Tiempo de usuario consumido
  • stime: Tiempo de sistema consumido

flags

El valor de flags es el valor de cero o más de las siguientes constantes juntas:

Valores posibles para flags
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.

Valores devueltos

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.

Errores/Excepciones

Valores de error número (errno)
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.

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top