讨论数量:
问题:pcntl_fork 函数的应用场景是怎样的?
应该是 pcntl_fork()
函数吧,看问题里面还多了一个 r
。
回答
应用场景
- 可创建守护进程 (可以两次调用 pcntl_fork ,让子进程成为 session leader )
- 可创建多进程
- ...
性质:父子进程间遵循读时共享写时复制 Cow (CoypOnWrite)
- 关于 ( fork 出来的子进程 “继承” 父进程上文环境的) 这里给出一个场景
$number = 1;
$ppid = posix_getpid();
$pid = pcntl_fork();
if ($pid < 0) {
die('could not fork');
} else if ($pid > 0) {
// 写时复制 number 的副本
$number += 1;
echo "father process. father's ppid={$ppid} children's pid={$pid} | number={$number}" . PHP_EOL;
} else {
// 写时复制 number 的副本
$number += 2;
echo "children process. | number={$number}" . PHP_EOL;
}
推荐文章: