[問題] fork 在迴圈裡面的問題

看板C_and_CPP (C/C++)作者 (Chen)時間12年前 (2013/10/22 10:54), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
各位好想要請問一下~ int main() { int num = 4; pid_t pid; printf("start! "); while(num!=1) { pid = fork(); if (pid>0) // parent { wait(NULL); break; } else if (pid==0) //child { printf("%d ",num); num--; } } return 0; } 請問child不是應該從pid=fork() 之後開始做嗎? 但是我發現他們好像會重頭開始做? 因為我在while前面print東西都會被print不只一次... 我是打算只讓child在while裡面跑這樣 ( 想要印出 start 4 3 2 ) 但是實際跑出來會得到 start 4 3 2 start 4 3 start 4 start 想請問是因為在迴圈裡面的關系還是其他原因 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.208.22

10/22 11:25, , 1F
你試著把pid在while開頭迴圈印出來就知道了
10/22 11:25, 1F

10/22 11:43, , 2F
囧 我發現我在printf("%d ",num); 裡面多家換行就好了
10/22 11:43, 2F

10/22 11:44, , 3F
請問是什麼原因阿??
10/22 11:44, 3F

10/22 11:49, , 4F

10/22 12:01, , 5F
感謝!!
10/22 12:01, 5F

10/22 12:01, , 6F
冏 我看錯了 抱歉 當我沒推
10/22 12:01, 6F
文章代碼(AID): #1IPUa3YZ (C_and_CPP)
文章代碼(AID): #1IPUa3YZ (C_and_CPP)