OS 99中央資工

看板Grad-ProbAsk作者 (passby)時間7年前 (2018/11/12 20:42), 7年前編輯推噓12(1207)
留言19則, 6人參與, 7年前最新討論串1/1
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://www.ptt.cc/bbs/Grad-ProbAsk/M.1542026543.A.13C.html ※ 編輯: paralyzation (1.163.20.226), 11/12/2018 20:42:46

11/12 20:59, 7年前 , 1F
父藉由fork產生子,pid=0時,子進入,pid>0時,父進入!
11/12 20:59, 1F
但是洪逸筆記上的,我上面貼的那張,他也是一樣的if else,為什麼他的變數是可以共享 的

11/12 21:06, 7年前 , 2F
顯然A=25,B=28
11/12 21:06, 2F
所以大大是認為答案是錯的嗎 ※ 編輯: paralyzation (1.163.20.226), 11/12/2018 21:11:54 ※ 編輯: paralyzation (1.163.20.226), 11/12/2018 21:14:27

11/12 21:43, 7年前 , 3F
筆記這題洪逸上課有說是共享,可以實作這裡不討論作法
11/12 21:43, 3F

11/12 22:28, 7年前 , 4F
不曉得會不會和wait(null)有關係…
11/12 22:28, 4F

11/12 22:55, 7年前 , 5F
wait是父等子完成才會繼續跟local變數會複製沒關係
11/12 22:55, 5F

11/12 23:19, 7年前 , 6F
洪逸上課說共享的意思不是指宣告在全域,而是用shar
11/12 23:19, 6F

11/12 23:19, 7年前 , 7F
ed mem或是File等等其他方式去實作
11/12 23:19, 7F

11/13 00:37, 7年前 , 8F
答案是對的吧!
11/13 00:37, 8F

11/13 07:29, 7年前 , 9F
顯然我錯了,全域變數確實不共享
11/13 07:29, 9F

11/13 13:14, 7年前 , 10F
應該不是說全域變數不共享,全域變數是屬於一個process
11/13 13:14, 10F

11/13 13:14, 7年前 , 11F
的,fork出另外一個process兩個是獨立的,不同的process
11/13 13:14, 11F

11/13 13:14, 7年前 , 12F
本來就不會共享屬於自己的全域變數
11/13 13:14, 12F

11/13 13:33, 7年前 , 13F
是的 問一下,像malloc pointer array之類的heap,會共
11/13 13:33, 13F

11/13 13:33, 7年前 , 14F
享嗎
11/13 13:33, 14F

11/13 13:33, 7年前 , 15F
就是fork()後
11/13 13:33, 15F

11/13 13:35, 7年前 , 16F
我是覺得不會,超過process size ,但是又記得有些機制可
11/13 13:35, 16F

11/13 13:35, 7年前 , 17F
以回parent去存取heap…
11/13 13:35, 17F

11/13 14:31, 7年前 , 18F
啊…應該不共享 看到前幾篇的print buffer了
11/13 14:31, 18F

11/13 19:26, 7年前 , 19F
只有thread會共享?
11/13 19:26, 19F
文章代碼(AID): #1RwNKl4y (Grad-ProbAsk)