PHP Conference Japan 2024

pcntl_rfork

(PHP 8 >= 8.1.0)

pcntl_rfork操作进程资源

描述

pcntl_rfork(int $flags, int $signal = 0): int

操作进程资源。

参数

flags

flags 参数决定调用进程(父进程)的哪些资源由新进程(子进程)共享,或者初始化为其默认值。

flags 是某些子集的逻辑或

  • RFPROC:如果设置,则创建一个新进程;否则更改会影响当前进程。
  • RFNOWAIT:如果设置,子进程将与父进程分离。子进程退出时不会为父进程留下状态以供收集。
  • RFFDG:如果设置,则复制调用者的文件描述符表;否则两个进程共享一个表。
  • RFCFDG:如果设置,新进程将使用干净的文件描述符表启动。与RFFDG互斥。
  • RFLINUXTHPN:如果设置,内核将返回 SIGUSR1 而不是 SIGCHILD 以便为子进程进行线程退出通知。这旨在执行 Linux clone 退出父进程通知。

signal

信号编号。

返回值

成功时,子进程的PID将在父进程的执行线程中返回,子进程的执行线程中返回0。失败时,父进程的上下文中将返回-1,不会创建子进程,并且会引发PHP错误。

示例

示例 #1 pcntl_rfork() 示例

<?php

$pid
= pcntl_rfork(RFNOWAIT|RFTSIGZMB, SIGUSR1);
if (
$pid > 0) {
// 这是父进程。
var_dump($pid);
} else {
// 这是子进程。
var_dump($pid);
sleep(2); // 由于子进程不等待,所以我们看到它的“pid”
}
?>

以上示例将输出类似以下内容

int(77093)
int(0)

备注

注意:

此函数仅在 BSD 系统上可用。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top