推 JiDung:a=1的時候會變四個阿 (第二次call fork) 01/10 13:06
→ JiDung:依照你的圖來說的話就是 a=1的下方仍要有 01/10 13:06
→ JiDung:父 跟 子1 01/10 13:06
→ dingfun:我覺得我圖表示錯了 我改一下@@ 01/10 13:19
※ 編輯: dingfun 來自: 59.105.31.59 (01/10 13:19)
→ Byzantin:圖沒錯 注意一下printf即可 01/10 13:55
→ qqoil:哪裡有錯= =??? 01/10 14:32
→ dingfun:抱歉回樓上兩位 這個圖是已經改好的了^^" 01/10 14:54
推 JiDung:喔 對吼 拉過去 圖沒錯@@ 01/10 14:57
→ dingfun:只是我覺得a的和應該是-2才對阿@@ 為什麼解答寫-6?? 01/10 14:57
※ 編輯: dingfun 來自: 59.105.31.59 (01/10 14:58)
→ JiDung:1+1+0+0+0+0+(-1)+(-1)+(-1)+(-1)+(-1)+(-1)+(-1)+(-1)=-6 01/10 14:58
※ 編輯: dingfun 來自: 59.105.31.59 (01/10 14:59)
→ dingfun:我懂了!!!真的只要注意printf就可以了= ="感謝J大和B大 01/10 15:01
推 FY4:有一半的pid都是0??? 01/11 00:01
推 FY4:不是除了父process以外的PID都是0嗎? 01/11 00:04
推 JiDung:沒錯阿 但是每次都是爸爸跟兒子成為"一組"一起印 01/11 01:19
→ JiDung:所以 pid 會有一半是0 一半不是0 01/11 01:19
→ JiDung:會想錯的原因 可能是沒想到 曾經當過爸爸 再當一次爸爸會再 01/11 01:20
→ JiDung:印一次非0的output 01/11 01:20
→ metalalive:sorry請教一個笨問題...parent的值先遞減一之後,再call 01/11 02:10
→ metalalive:fork(), 則分裂出來的child,變數a的值會是1,0,-1 對八? 01/11 02:12
→ JiDung:不太懂樓上再說啥 我只能說a的值只有執行a--才會變 01/11 02:16
→ JiDung:我前面推文已經有提到列印出來的a的值 01/11 02:17
推 FY4:所以本來是子process 後來執行到fork 他的pid就變非0?? 01/11 11:05
→ JiDung:x = y; 不管x以前值是什麼 y的值會給x 覆蓋掉 01/11 13:17
→ FY4:所以本來第一個被fork()出來的process 在執行fork()的時候 01/11 20:58
→ FY4:他的pid會由0 變非0?? 因為子行程一定是0 但是不知道他變父行 01/11 20:59
→ FY4:程會變他的pid值嗎? 01/11 21:00
推 JiDung:你不要想以前 你要想現在 現在call fork是現在call fork 01/11 23:47
→ JiDung:以前是以前 現在call fork 只要他現在是爸爸 01/11 23:47
→ JiDung:就會是 非0 只要他是剛誕生的兒子 就是0 01/11 23:47
→ JiDung:這是"fork()此function的回傳值" 然後再assign給 pid變數 01/11 23:48
→ JiDung:而assign給變數時候 就是直接覆蓋上去~ 01/11 23:48
推 FY4:感恩樓上 01/12 09:42