作者paralyzation (passby)
看板Grad-ProbAsk
標題os 99中央資工
時間Mon Nov 12 20:42:20 2018
https://i.imgur.com/XaXBHJf.jpg
想請問一下為什麼這題的變數value,在child process和parent process不是共享的
https://i.imgur.com/VOAD4uq.jpg
但是筆記上這題,他確是共享的,兩題不都是宣告在global嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.20.226
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1542026543.A.13C.html
※ 編輯: paralyzation (1.163.20.226), 11/12/2018 20:42:46
1F:推 Aa841018: 父藉由fork產生子,pid=0時,子進入,pid>0時,父進入!11/12 20:59
但是洪逸筆記上的,我上面貼的那張,他也是一樣的if else,為什麼他的變數是可以共享
的
2F:推 Dora5566: 顯然A=25,B=2811/12 21:06
所以大大是認為答案是錯的嗎
※ 編輯: paralyzation (1.163.20.226), 11/12/2018 21:11:54
※ 編輯: paralyzation (1.163.20.226), 11/12/2018 21:14:27
3F:推 skyHuan: 筆記這題洪逸上課有說是共享,可以實作這裡不討論作法 11/12 21:43
4F:推 Aa841018: 不曉得會不會和wait(null)有關係… 11/12 22:28
5F:推 skyHuan: wait是父等子完成才會繼續跟local變數會複製沒關係 11/12 22:55
6F:推 kcilao110779: 洪逸上課說共享的意思不是指宣告在全域,而是用shar 11/12 23:19
7F:→ kcilao110779: ed mem或是File等等其他方式去實作 11/12 23:19
8F:推 EXPCDR: 答案是對的吧! 11/13 00:37
9F:推 Dora5566: 顯然我錯了,全域變數確實不共享 11/13 07:29
10F:推 skyHuan: 應該不是說全域變數不共享,全域變數是屬於一個process 11/13 13:14
11F:→ skyHuan: 的,fork出另外一個process兩個是獨立的,不同的process 11/13 13:14
12F:→ skyHuan: 本來就不會共享屬於自己的全域變數 11/13 13:14
13F:推 Dora5566: 是的 問一下,像malloc pointer array之類的heap,會共 11/13 13:33
14F:→ Dora5566: 享嗎 11/13 13:33
15F:→ Dora5566: 就是fork()後 11/13 13:33
16F:→ Dora5566: 我是覺得不會,超過process size ,但是又記得有些機制可 11/13 13:35
17F:→ Dora5566: 以回parent去存取heap… 11/13 13:35
18F:推 Dora5566: 啊…應該不共享 看到前幾篇的print buffer了 11/13 14:31
19F:推 o5739201: 只有thread會共享? 11/13 19:26