pcntl 多进程下如何避免进程嵌套??

发布于 2022-09-04 10:23:09 字数 772 浏览 17 评论 0

进程嵌套的例子:

PHP Code:

// 这里这段代码怎么理解??
// 我是这样理解的(但是结果对不上)
//------------------------------------------------------
// 1. p2 进程自身一个,包括自身 1 个进程
// 2. p1 进程创建 1 个子进程 p2,包括自身 2 个进程
// 3. 主进程创建 2 个子进程p1 , p2 ,
//    又 p1 创建一个子进程 p2,所以,
//    包括自身:1(p2) + 2(p1) + 1(self) = 4 个进程
// 4. 总共这段代码有: 1 + 2 + 4 = 7 个进程
// 5. 结果应该输出: 7 个 process
// 6. 但实际上,结果只有 4 个 process,这是为什么??
//------------------------------------------------------
$p1 = pcntl_fork();
$p2 = pcntl_fork();

echo 'process' . PHP_EOL;

结果:

clipboard.png

结果为什么输出 4 个 process ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一笑 2022-09-11 10:23:09

clipboard.png

第一个fork执行后, 产生了两个进程, 这两个进程分别执行第二个fork, 所以有了4个进程, 执行了4次 echo.
fork之后,子进程和父进程都是从fork的位置继续执行, 而不是从头开始执行

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文