if statement with fork() - Linux

Table of Contents


最近小弟在讀OS, 用C++在ubuntu上做了一些練習, 發現一個很奇怪的地方

code1跟code2差別在else statement, 其中1代表一個process(包含test2自己)

但code1只是多了一個else卻造成output有8個1(比code2多了2個), stack overflow

上面也沒有類似例題, 想了滿久也不確定是什麼機制造成else那邊會再多生出2個

process, 先謝謝大家

[Code1_output: 11111111]
void test2(){

int i;
fork();

if(fork()>0){
fork();
}

else if(fork()==0){}

cout<<" 1 "; //輸出一個1代表1個process
}


[Code2_output: 111111]

void test2(){

int i;
fork();

if(fork()>0){
fork();
}

// else if(fork()==0){}

cout<<" 1 "; //輸出一個1代表1個process
}

--

All Comments

Ula avatarUla2017-07-27
if那一層fork的return值 <
Eden avatarEden2017-07-31
建議可以畫個圖說明一下你的思考模式
這樣板友比較好幫你找問題點
Candice avatarCandice2017-08-02
進 if 判斷那個 fork()==0 的 fork 也會執行呀
Ida avatarIda2017-08-05
8 個 6 個沒錯啊
Kyle avatarKyle2017-08-07
題外話思考邏輯是不是應該先 value = fork() 然後來判斷
Odelette avatarOdelette2017-08-10
已更新