Re: [理工] 101交大OS

看板Grad-ProbAsk作者 (LS)時間13年前 (2012/11/25 01:46), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/5 (看更多)
看了前幾天版友問的這題,回文有點混亂,自己大概算出了答案 把自己想法寫出來,順便想確定一下自己的概念對不對(有錯請糾正我) #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

11/25 21:26, , 1F
我題外話一下...是 strcat 可以自己跑程式看看
11/25 21:26, 1F

11/25 22:20, , 2F
不太對喔 會印出的分別是P0-bc P1-abc P12-abc P2-bc
11/25 22:20, 2F

11/25 22:20, , 3F
第三個fork是if是parent process才會執行裡面的statements
11/25 22:20, 3F

11/25 22:22, , 4F
至於最後一段 我想是複製整份code跟program counter 也就
11/25 22:22, 4F

11/25 22:23, , 5F
是 是複製要從"第幾行"開始繼續執行這樣
11/25 22:23, 5F
※ 編輯: Lsilver 來自: 111.242.26.72 (11/26 22:52)

11/26 22:53, , 6F
了解了~ 感謝!! 這樣修改希望正確了
11/26 22:53, 6F
文章代碼(AID): #1GiGVh5S (Grad-ProbAsk)
文章代碼(AID): #1GiGVh5S (Grad-ProbAsk)