看板 Grad-ProbAsk 關於我們 聯絡資訊
各位大大好,小弟看到一題詢問有多少process會產生的fork()提,想請問各位要 怎麼算及分析題目 int main(){ int i; for(i=0;i<3;i++){ if(fork()==0){ fork(); fork(); fork(); } } 我知道當i=0的時候會產生出8個process,但是i=1&i=2時要如何判定fork()==0? 謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.158.250 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1491302883.A.9C3.html
yupog2003: fork執行後,一個process會變成兩個process,一個是 04/04 20:02
yupog2003: parent,一個是child,其中parent process從fork()得到 04/04 20:03
yupog2003: 的回傳值是child process的id,child process從fork() 04/04 20:03
yupog2003: 得到的回傳值為0,從這邊下去判斷是否為0 04/04 20:04
yupog2003: 跟i等於多少沒有關係 04/04 20:04
darren0831: parent process得到的回傳值不是0,不會通過if判別式 04/05 13:25
darren0831: i=0時 除了一開始的主程式外還會生出另外八個process 04/05 13:26
darren0831: 而這些process在i=1時,因為if(fork()==0)而會產生 04/05 13:29
darren0831: 其他9個child process,跑完i=1後共81個process 04/05 13:30
darren0831: 依此類推~配合yu大大的推文應該可以理解 04/05 13:32
nakabin: 每一次跑loop的時候遇到的fork產生的child的回傳值才會是 04/08 01:07
nakabin: 0 以前的child已經不是child惹 04/08 01:07
yupog2003: 為人子女有朝一日也會成為父母 04/08 10:07