#include <stdio.h>
main()
{
int i, n=1;
for(i=0;i<n;i++) {
fork();
printf("Hello!");
}
}
如果我设置 n=1,我会感到困惑,它会打印 2 次 Hello。
- 如果 n=2,则打印 8 次 Hello
- 如果 n=3,它打印 Hello 24 次..
- 等等..
最佳答案
没有单一的“公式”,因为不同的操作系统以不同的方式完成它。但是 fork()
所做的是复制该进程。通常涉及的粗略步骤:
- 停止当前进程。
- 新建一个进程,并初始化或复制相关的内部结构。
- 复制进程内存。
- 复制资源,如打开的文件描述符等。
- 复制 CPU/FPU 寄存器。
- 恢复两个进程。
关于c - 是否有任何公式可以知道 fork() 如何近乎完美地复制当前进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21858905/