看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《cybrog (cybrog)》之銘言: : main() : { : for(i=0;i<4;i++) : {fork();} : } : 有點不懂為什麼答案是產生16個process : main()完之後產生的fork()還會繼續產生process? 你可以把main()想像成parent 經過第一次fork(),main()會生出一個child process 此時總共有2個processes,一個是main(),一個是main()的child 經過第二次fork(),main()及main()的child各會再生出他們的child 此時總共有4個processes,以此類推,跑完4次後總共有16個processes 因為上面的程式對於fork()並沒有任何條件限制,所以parent與child都會執行 我所謂的條件是像 if(pid==0) fork(); 如果程式是這樣的話,那就只有child會執行fork,parent不會執行 : 我的問題是像 : main() : { : fork(); : fork(); : fork(); : } 這段程式碼就等於 main() { for(i=0;i<3;i++) { fork(); } } 其實跟上面的程式碼是一樣的,只是寫法不同而已 : 像這樣的fork產生的process不是都是本身之後以下的嗎@@ fork()產生的是child process沒錯 但如果在下一輪的fork()沒有任何條件限制的話 則在此輪的所有processes都會執行下一輪的fork() 你也可以想成是在下一輪中,此輪的所有processes都會變成parent process 然後fork()出他們自己的child : 我表達不太好@@ 不知道有沒有人看得懂或解釋一下!! : 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.173.39 ※ 文章網址: http://www.ptt.cc/bbs/Grad-ProbAsk/M.1405963361.A.42B.html
cybrog:了解! 感謝你的幫忙~ 07/22 21:27