#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid1, pid2, pid3, pid4;
pid1=fork();
if (pid1!=0) {
pid2=fork();
pid3=fork();
}else {
pid4=fork();
}
return 0;
}
你好, 以下代碼執行4次分支。起初,原始程序(讓我們稱之爲P0)執行「pid1 = fork()」並創建一個子程序(讓它稱爲P1)。然後原始進程再次執行pid2 = fork()並創建另一個子進程(我們稱之爲P2)。然後P2和P0執行「pid3 = fork()」。因此,P0創建了第三個孩子(稱爲P3),P2成爲父母並創建一個孩子(稱爲P4)。最後,在else語句中,第一個孩子(P1)創建一個孩子(P5)。因此,樹是這樣的:c程序中的多個fork()
P0
P1 P2 P3
P5 P4
我的問題是:我說的對不? 在此先感謝。
使用調試器和/或添加一些調試'printf's和檢查自己 - 你會學到更多的方式。 –
不是pid2 = fork();返回兩次(父母和子女),所以pid3 = fork90;將執行兩次。 –
@DavidZimmerman是的,這就是提問說,爲什麼在他的樹形圖的數字上升到5 – JeremyP