【发布时间】:2015-01-01 01:03:50
【问题描述】:
#include<iostream>
#include<unistd.h>
#include<stdio.h>
using namespace std;
int main()
{
fork();
fork();
fork();
fork();
printf("*"); /*This prints 16 stars*/
return 0;
}
使用fork() 时,为什么会打印16 个*?
我了解fork() 会生成一个新的
两个子进程都执行相同的进程,这可以解释为什么一个分叉会生成 2 颗星,但是,如果有四个分叉,它会打印 16 个,我可以看到每个fork() 都会加倍。
但我不明白为什么。每个 fork 是否执行它下面的函数和参数?
【问题讨论】:
-
还有无数其他人。 (大部分因故而被删除。)
-
无论如何
using namespace std;在 C 程序中?在 C++ 中已经够糟糕了。 -
我会记住的!
-
我将投票保持开放,因为父子节点中的重复分叉以指数速度增加。我认为该解释将有助于 OP 和未来的访问者深入了解流程总和的实际情况。