pcntl_sigwaitinfo

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

pcntl_sigwaitinfoWartet auf Signale

Beschreibung

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

Die Funktion pcntl_sigwaitinfo() unterbricht die Ausführung des aufrufenden Skripts, bis eines der in signals angegebenen Signale zugestellt wird. Ist eines der Signale bereits ausstehend (z. B. durch pcntl_sigprocmask() blockiert), kehrt pcntl_sigwaitinfo() sofort zurück.

Parameter-Liste

signals

Array von Signalen, auf die gewartet werden soll.

info

Der Parameter info wird auf ein Array gesetzt, das Informationen über das Signal enthält.

Die folgenden Elemente werden für alle Signale gesetzt:

  • signo: Signalnummer
  • errno: Eine Fehlernummer
  • code: Signalcode

Die folgenden Elemente können für das Signal SIGCHLD gesetzt sein:

  • status: Exit-Wert oder Signal
  • utime: Verbrauchte Benutzerzeit
  • stime: Verbrauchte Systemzeit
  • pid: Prozess-ID des sendenden Prozesses
  • uid: Reale Benutzer-ID des sendenden Prozesses

Die folgenden Elemente können für die Signale SIGILL, SIGFPE, SIGSEGV und SIGBUS gesetzt sein:

  • addr: Speicheradresse, die den Fehler verursacht hat

Die folgenden Elemente können für das Signal SIGPOLL gesetzt sein:

  • band: Band-Ereignis
  • fd: Nummer des Dateideskriptors

Rückgabewerte

Gibt bei Erfolg eine Signalnummer zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.4.0 Es wird ein ValueError geworfen, wenn signal leer ist.
8.4.0 Es wird ein TypeError geworfen, wenn der Wert von signal kein int ist.
8.4.0 Es wird ein ValueError geworfen, wenn der Wert von signal ungültig ist.

Beispiele

Beispiel #1 pcntl_sigwaitinfo()-Beispiel

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

echo
"Sending SIGHUP to self\n";
posix_kill(posix_getpid(), SIGHUP);

echo
"Waiting for signals\n";
$info = array();
pcntl_sigwaitinfo(array(SIGHUP), $info);
?>

Siehe auch