[問題] if statement with fork()

作者: j611062000 (iLoveLumia)   2017-07-23 16:42:25
最近小弟在讀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
}
作者: silentazure (北極熊)   2017-07-23 19:21:00
if那一層fork的return值 <
作者: yupog2003 (屁股)   2017-07-23 21:26:00
建議可以畫個圖說明一下你的思考模式這樣板友比較好幫你找問題點
作者: a0919610611 (熾)   2017-07-23 22:35:00
進 if 判斷那個 fork()==0 的 fork 也會執行呀
作者: Bencrie   2017-07-24 00:19:00
8 個 6 個沒錯啊
作者: kenduest (小州)   2017-07-24 09:35:00
題外話思考邏輯是不是應該先 value = fork() 然後來判斷
作者: j611062000 (iLoveLumia)   2017-07-25 10:42:00
已更新
繼續閱讀
[問題] Arch-Linux 安裝的疑問 (暫時改裝其他)ekids1234[問題] Linux指令區分大小寫的好處?dharma[問題] 工作站內網架設yoyo50420[問題] @folder [email protected]

Links booklink

Contact Us: admin [ a t ] ucptt.com