2024 年日本 PHP 研討會

pcntl_sigwaitinfo

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

pcntl_sigwaitinfo等待訊號

說明

pcntl_sigwaitinfo(陣列 $signals, 陣列 &$info = []): 整數|false

pcntl_sigwaitinfo() 函式會暫停呼叫腳本的執行,直到傳送 signals 中指定的其中一個訊號為止。如果其中一個訊號已經處於待處理狀態(例如,被 pcntl_sigprocmask() 阻擋),pcntl_sigwaitinfo() 將立即返回。

參數

訊號 (Signals)

要等待的訊號陣列。

info

info 參數會被設定為一個包含訊號資訊的陣列。

以下元素會針對所有訊號設定:

  • signo:訊號編號
  • errno:錯誤編號
  • code:訊號代碼

以下元素可能會針對 SIGCHLD 訊號設定:

  • status:結束值或訊號
  • utime:使用者時間消耗
  • stime:系統時間消耗
  • pid:發送程序 ID
  • uid:發送程序的實際使用者 ID

以下元素可能會針對 SIGILLSIGFPESIGSEGVSIGBUS 訊號設定:

  • addr:造成錯誤的記憶體位置

以下元素可能會針對 SIGPOLL 訊號設定:

  • band:頻寬事件
  • fd:檔案描述符編號

回傳值

成功時返回訊號編號,失敗時返回 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);
?>

參見

新增註解

使用者貢獻的註解 1 則註解

0
dave at mudsite dot com
8 年前
此函式在未實作底層 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
To Top