# pcntl_sigwaitinfo

(PHP 5 >= 5.3.0, PHP 7)

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`, `SIGSEGV` 和 `SIGBUS` 可能会被设置的元素:

  - addr: 发生故障的内存位置

  可能会为`SIGPOLL` 信号设置的元素：

  - band: Band event
  - fd: 文件描述符

### 返回值

成功时，函数pcntl_sigwaitinfo()返回一个信号编号。

### 范例

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

### 参见

- pcntl_sigprocmask() - 设置或检索阻塞信号
- pcntl_sigtimedwait() - 带超时机制的信号等待