if statement with fork() - Linux

Jacob avatar
By Jacob
at 2017-07-23T16:42

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
}

--
Tags: Linux

All Comments

Ula avatar
By Ula
at 2017-07-27T02:10
if那一層fork的return值 <
Eden avatar
By Eden
at 2017-07-31T23:19
建議可以畫個圖說明一下你的思考模式
這樣板友比較好幫你找問題點
Candice avatar
By Candice
at 2017-08-02T07:00
進 if 判斷那個 fork()==0 的 fork 也會執行呀
Ida avatar
By Ida
at 2017-08-05T22:18
8 個 6 個沒錯啊
Kyle avatar
By Kyle
at 2017-08-07T06:13
題外話思考邏輯是不是應該先 value = fork() 然後來判斷
Odelette avatar
By Odelette
at 2017-08-10T15:28
已更新

Linux指令區分大小寫的好處?

Caroline avatar
By Caroline
at 2017-07-21T16:36
雖然熟悉後 可以記得何時大寫何時小寫 但當初大神在規劃Linux指令區分大小寫 是有什麼原因嗎? 單字母不夠用,所以分大小寫? thanks - ...

工作站內網架設

Valerie avatar
By Valerie
at 2017-07-21T15:52
大家好 小弟實驗室有好幾台linux環境的工作站 我們有10幾組外網ip 目前我們需要讓某三台工作站連到某一個外網IP 但同時又要架設內網讓我們可以遠端到這些工作站 請問如果用switch來實現的話 我的工作站應該要怎麼設定ssh 才可以讓這台工作站可以接到某一個外網 目前我打ipconfig去看 ...

@folder 的@是什麼意思

Connor avatar
By Connor
at 2017-07-21T11:23
對不起 請教一下 synology DSM 裡有很多at開頭的 folder 如 ateadir atappstore 這個at 有什麼特殊含意嗎 是指 hidden folder ? 謝謝 - ...

自製LiveCD 簡要過程

Ingrid avatar
By Ingrid
at 2017-07-21T09:00
擁有一個LiveCD 或ISO boot的好處是 不怕裝壞設壞 只要REBOOT 系統就還是原來的系統 自製的話 可以安裝想用的軟體符合需求 變小緊緻化 有了之前boot loop device的經驗 還可以設成會成長的系統 只要把原來存在ram的 改為存在disk即可 設成經由grub menu 選換 ...

Asus x550vx ubuntu+win10雙系統安裝失敗

Noah avatar
By Noah
at 2017-07-20T21:56
前段時間換了電腦,因為寫程式的需要所以想裝linux系統,看了一些Youtube和論壇的 教學,還是安裝失敗,安裝的版本是ubuntu 16.04 LTS 和 ubuntu 17.04, 有使用USB和EasyUEFI來安裝,但每次進入都會停在讀取畫面(有跑馬燈的)如下: http://0.blog.x ...