pcntl_sigwaitinfo

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

pcntl_sigwaitinfo — Attend un signal

Description

function 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 (c.-à-d., 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
0
dave at mudsite dot com ¶
9 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