文字

pcntl_sigwaitinfo

(PHP 5 >= 5.3.0)

pcntl_sigwaitinfo等待信号

说明

int pcntl_sigwaitinfo ( array $set [, array &$siginfo ] )

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() - 带超时机制的信号等待
上一篇: 下一篇: