這裏是我使用2個fork()系統調用一個接一個的代碼 - 它實際上是如何工作的?2個或更多分叉系統調用如何工作?
#include <unistd.h>
#include <iostream.h>
using namespace std;
int main()
{
cout << "0. I am process " << getpid() << endl;
(void) fork();
cout << "1. I am process " << getpid() << endl;
(void) fork();
cout << "2. I am process " << getpid() << endl;
}
我得到的輸出:
0.我處理27701
1.我處理25915
1.我處理27701
2.我處理27781
2.我上午過程26170
2.我處理27701
這是我用過的3叉的系統調用下一個程序,我該如何得到這樣的輸出?如果我要手動解決這個代碼,那麼邏輯是什麼?
#include <unistd.h>
#include <iostream>
using namespace std;
int main()
{
cout << "0. I am process " << getpid() << endl;
(void) fork();
cout << "1. I am process " << getpid() << endl;
(void) fork();
cout << "2. I am process " << getpid() << endl;
(void) fork();
cout << "3. I am process " << getpid() << endl;
}
在這裏,我得到的輸出:
0.我處理27116
1.我處理26147
2.我處理27371
2.我處理26147
3我是處理24416
3.我處理27371
3.我處理27508
3.我處理26147
1.我處理27116
2.我處理21406
2.我處理27116
3.我處理27369
3.我處理21406
3.我處理26752
3.我處理27116
這裏有很多關於'fork'如何在這種複雜情況下工作的問題。只畫一幅畫。 –
我需要邏輯來繪製圖片!如果可能的話,請解釋第一個程序的邏輯,如果我理解了,那麼我會自己嘗試第二個程序。 –
你的第一個程序應該輸出4個標記爲'2'的行,有4個不同的PID。 25915的輸出發生了什麼? –