最近小弟在讀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
}