pcntl_sigwaitinfo

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

pcntl_sigwaitinfoEspera una señal

Descripción

pcntl_sigwaitinfo(array $signals, array &$info = []): int|false

La función pcntl_sigwaitinfo() suspende su ejecución hasta la recepción de una de las señales indicadas en signals. Si una de las señales ya está en espera (i.e., bloqueada por pcntl_sigprocmask()), pcntl_sigwaitinfo() se termina inmediatamente.

Parámetros

signals

Un array de señales a esperar.

info

El parámetro info recibe un array que contiene la información sobre la señal.

Los siguientes elementos están siempre disponibles para todas las señales:

  • signo : número de señal
  • errno : un número de error
  • code : código de señal

Los siguientes elementos pueden estar disponibles para la señal SIGCHLD:

  • status : valor de salida o señal
  • utime : tiempo de usuario consumido
  • stime : tiempo de sistema consumido
  • pid : número de proceso llamante
  • uid : identificador del usuario llamante, o del proceso llamante

Los siguientes elementos pueden estar disponibles para las señales SIGILL, SIGFPE, SIGSEGV y SIGBUS:

  • addr : dirección de memoria que causó el error

Los siguientes elementos pueden estar disponibles para la señal SIGPOLL:

  • band : evento de band
  • fd : número de puntero de fichero

Valores devueltos

Devuelve un número de señal en caso de éxito, o false en caso de error.

Historial de cambios

Versión Descripción
8.4.0 Se lanza una excepción ValueError si el signal está vacío.
8.4.0 Se lanza una excepción TypeError si el valor de signal no es un int.
8.4.0 Se lanza una excepción ValueError si el valor de signal es inválido.

Ejemplos

Ejemplo #1 Ejemplo con pcntl_sigwaitinfo()

<?php
echo "Bloquea la señal SIGHUP\n";
pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));

echo
"Envía la señal SIGHUP a sí mismo\n";
posix_kill(posix_getpid(), SIGHUP);

echo
"Espera señales\n";
$info = array();
pcntl_sigwaitinfo(array(SIGHUP), $info);
?>

Ver también

add a note

User Contributed Notes 1 note

up
0
dave at mudsite dot com
8 years ago
This function is not available on platforms that do not implement the underlying C function. Included in this would be MaxOS[1], and FreeBSD[2]

[1] : http://opensource.apple.com//source/xnu/xnu-1456.1.26/bsd/sys/signal.h

[2] : http://fxr.watson.org/fxr/source/sys/signal.h?v=FREEBSD11
To Top