等待訊號

pcntl_sigwaitinfo

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

pcntl_sigwaitinfo等待訊號

說明

pcntl_sigwaitinfo(array $set, array &$siginfo = ?): int

pcntl_sigwaitinfo()函式暫停呼叫指令碼的執行直到接收到set 參數中列出的某個訊號。只要其中的一個訊號已經在等待狀態(比如: 通過 pcntl_sigprocmask()函式阻塞), 函式pcntl_sigwaitinfo()就回立刻返回。

參數

set

要等待的訊號陣列。

siginfo

siginfo是一個輸出參數,用來返回訊號的資訊。

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

  • signo: 訊號編號
  • errno: 錯誤編號
  • code: 訊號程式碼

下面元素可能會為SIGCHLD訊號設定:

  • status: 退出的值或訊號
  • utime: 使用者消耗的時間
  • stime: 系統(內核)消耗的時間
  • pid: 發送程序ID
  • uid: 發送程序的實際使用者ID

訊號SIGILL, SIGFPE, SIGSEGVSIGBUS 可能會被設定的元素:

  • addr: 發生故障的記憶體位置

可能會為SIGPOLL 訊號設定的元素:

  • band: Band event
  • fd: 檔案描述符

返回值

成功時,函式pcntl_sigwaitinfo()返回一個訊號編號。

範例

示例 #1 pcntl_sigwaitinfo() example

<?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);
?>

參見

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *