PHP PCNTL - pcntl_signal()'s restart_syscalls参数做什么?


PHP PCNTL - what does pcntl_signal()'s restart_syscalls parameter do?

我已经使用PHP的PCNTL扩展有一段时间了,但是不能弄清楚pcntl_signal()restart_syscalls参数是什么。我试着在网上搜索,但找不到任何信息。所有的文档都说:

"指定当此信号到达时是否应该使用系统调用重新启动。"

什么是"系统调用重启"?

假设您编写的信号处理程序使用以下信号来停止进程:

  • SIGTERM:终止进程;它可以被阻塞、处理和忽略,不像SIGKILL
  • SIGKILL:立即终止进程
  • SIGSTOP:将进程暂停在当前状态

restart_syscalls 表示当signo到达时是否需要重启系统调用。signo的例子是我上面列出的三个,还有更多。

这意味着,如果restart_syscalls被设置为默认值TRUE,这将在被信号signo停止的进程之后重新启动某些系统调用。它使用一个时间参数重新启动被中断的系统调用,该参数经过适当调整以考虑已经经过的时间。

我把你推荐给这个非常简单明了的例子:pcntl_wait没有被SIGTERM打断