PHP 8.4.22 Released!

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

add a note

User Contributed Notes 1 note

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