PHP pcntl_sigwaitinfo 进程控制函数

  • 定义和用法

    pcntl_sigwaitinfo - 等待信号
  • 版本支持

    PHP4 PHP5 PHP7
    支持 v5.3.0+支持 支持
  • 语法

    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: 绑定事件
    • fd: 文件描述符
  • 返回值

    成功时,函数pcntl_sigwaitinfo()返回一个信号编号。
  • 示例

    下面例子演示多进程示例:
    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() - 带超时机制的信号等待