我想了解下面的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