PHP Conference Japan 2024

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 值不是 整数,则抛出 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 函数的平台上不可用。其中包括 MaxOS[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