我想了解下面的fork()函数的顺序是如何工作的?我想了解一系列的fork()函数是如何工作的?
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main() {
fork(); cout << "1 " << endl;//calling fork 1
fork(); cout << "2 " << endl; // calling fork 2
fork(); cout << "3 " << endl;// calling fork 3
fork(); cout<<" 4 "<<endl;//calling fork 4
return 0;
}
将我上面的程序流程结构是这样的,是我的假设是正确的?
parent(x) / | | \ 1 2 3 4 / | \ /\ | 2 3 4 3 4 4 /\ | | 3 4 4 4 | 4
按我的理解,该方案将产生16个进程是吗?
是否可以在2之前输出3?如果是这样以及为什么?
对于最后一个问题,仅仅因为创建了一个新进程,它不必立即开始运行。父进程仍然可以运行,并且由于您有多个其他进程,其中一个进程可以在其他进程打印前轻松打印2和3. –
呵呵,请不要使用多种语言标记,除非您正在比较语言的功能标签。只使用你实际编程的语言(本例中是C++)。 –
树中的数字代表什么? 每个节点都是一个进程? 此外,如果这有助于1将被打印两次2次。 2将被打印4次,3 - > 8,4 - > 16 并且程序将为您制作的程序调用生成15个新进程+1。 – user183833