看板 Grad-ProbAsk 關於我們 聯絡資訊
看了前幾天版友問的這題,回文有點混亂,自己大概算出了答案 把自己想法寫出來,順便想確定一下自己的概念對不對(有錯請糾正我) #include <stdio.h> main() { char buffer[1024]=""; int i,pid; if(fork()==0)stract(buffer,"a"); //1號fork fork();stract(buffer,"b"); //2號fork if(fork()>0){ //3號fork stract(buffer,"c"); printf("%s\n",buffer); fflush(NULL); } } 求印出的abc個數 [我的想法] P0 / | \ P1 P2 P3 / \ | P12 P13 P23 | P123 P0代表父代 Px x代表由程式第幾個fork所生出 (例.P12即 由第1號fork生出的子代,再經2號fork所生出,就是第三代) P0, 印bc P1,P12 印abc P2 印bc 所以總共2a,4b,4c P3,P23,P13,P123其他因為這些process新成功fork出來的此時回傳0 不符合>0所沒印 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.165.111
mingcloud:我題外話一下...是 strcat 可以自己跑程式看看 11/25 21:26
sting47:不太對喔 會印出的分別是P0-bc P1-abc P12-abc P2-bc 11/25 22:20
sting47:第三個fork是if是parent process才會執行裡面的statements 11/25 22:20
sting47:至於最後一段 我想是複製整份code跟program counter 也就 11/25 22:22
sting47:是 是複製要從"第幾行"開始繼續執行這樣 11/25 22:23
※ 編輯: Lsilver 來自: 111.242.26.72 (11/26 22:52)
Lsilver:了解了~ 感謝!! 這樣修改希望正確了 11/26 22:53