此函式在未實作底層 C 函式的平台上無法使用。這包含 macOS[1] 和 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
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
pcntl_sigwaitinfo — 等待訊號
pcntl_sigwaitinfo() 函式會暫停呼叫腳本的執行,直到傳送 signals
中指定的其中一個訊號為止。如果其中一個訊號已經處於待處理狀態(例如,被 pcntl_sigprocmask() 阻擋),pcntl_sigwaitinfo() 將立即返回。
訊號 (Signals)
要等待的訊號陣列。
info
info
參數會被設定為一個包含訊號資訊的陣列。
以下元素會針對所有訊號設定:
以下元素可能會針對 SIGCHLD
訊號設定:
以下元素可能會針對 SIGILL
、SIGFPE
、SIGSEGV
和 SIGBUS
訊號設定:
以下元素可能會針對 SIGPOLL
訊號設定:
成功時返回訊號編號,失敗時返回 false
。
版本 | 說明 |
---|---|
8.4.0 | 如果 signal 為空,則會拋出 ValueError。 |
8.4.0 | 如果 signal 值不是 int 型態,則會拋出 TypeError。 |
8.4.0 | 如果 signal 值無效,則會拋出 ValueError。 |
範例 #1 pcntl_sigwaitinfo() 範例
<?php
echo "封鎖 SIGHUP 訊號\n";
pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));
echo "傳送 SIGHUP 給自己\n";
posix_kill(posix_getpid(), SIGHUP);
echo "等待訊號\n";
$info = array();
pcntl_sigwaitinfo(array(SIGHUP), $info);
?>
此函式在未實作底層 C 函式的平台上無法使用。這包含 macOS[1] 和 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