pcntl_sigwaitinfo

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

pcntl_sigwaitinfoAttend un signal

Description

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

La fonction pcntl_sigwaitinfo() suspend son exécution jusqu'à la réception d'un des signaux, indiqué dans signals. Si un des signaux est déjà en attente (i.e., bloqué par pcntl_sigprocmask()), pcntl_sigwaitinfo() se termine immédiatement.

Liste de paramètres

signals

Un tableau de signaux à attendre.

info

Le paramètre info reçoit un tableau contenant les informations sur le signal.

Les éléments suivants sont toujours disponibles pour tous les signaux :

  • signo : numéro de signal
  • errno : un numéro d'erreur
  • code : code de signal

Les éléments suivants peuvent être disponibles pour le signal SIGCHLD :

  • status : valeur de sortie ou signal
  • utime : temps utilisateur consommé
  • stime : temps système consommé
  • pid : numéro de processus appelant
  • uid : identifiant de l'utilisateur appelant, ou du processus appelant

Les éléments suivants peuvent être disponibles pour les signaux SIGILL, SIGFPE, SIGSEGV et SIGBUS :

  • addr : adresse mémoire qui a causé l'erreur

Les éléments suivants peuvent être disponibles pour le signal SIGPOLL :

  • band : événement de band
  • fd : numéro de pointeur de fichier

Valeurs de retour

Retourne un numéro du signal en cas de succès, ou false si une erreur survient.

Historique

Version Description
8.4.0 Une exception ValueError est levée si le signal est vide.
8.4.0 Une exception TypeError est levée si la valeur de signal n'est pas un int.
8.4.0 Une exception ValueError est levée si la valeur de signal est invalide.

Exemples

Exemple #1 Exemple avec pcntl_sigwaitinfo()

<?php
echo "Bloque le signal SIGHUP\n";
pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));

echo
"Envoi du signal SIGHUP à moi-même\n";
posix_kill(posix_getpid(), SIGHUP);

echo
"Attente de signaux\n";
$info = array();
pcntl_sigwaitinfo(array(SIGHUP), $info);
?>

Voir aussi

add a note

User Contributed Notes 1 note

up
-1
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