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