[問題] 關於 fork() 之後的記憶體位址

看板LinuxDev作者 (gowrite)時間3年前 (2021/05/05 06:35), 編輯推噓1(103)
留言4則, 2人參與, 3年前最新討論串1/1
大家好,自學 linux programming 有遇到一些問題, 程式碼如下, ``` pid_t pid; int num = 0; printf("before fork()\n"); pid = fork(); printf("pid: %d, num: %d, %p\n", pid, num, &num); if(pid == 0){ // child process num = 111; } else{ // parent process num = 999; } sleep(1); printf("pid: %d, num: %d, %p\n", pid, num, &num); ``` 自己在做一些小實驗, 想要驗證 fork() 之後,parent 跟 child 會使用不同的記憶體空間, 但是經由上述的程式碼驗證的時候, printf 印出來的 num 數值不同,但記憶體地址 &num 卻都是一樣的 想問說為什麼有這個現象? 是因為 我程式碼寫錯,還是因為 虛擬記憶體等等的其他因素所造成的? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.187.70 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1620167732.A.0BF.html

05/05 10:19, 3年前 , 1F
https://reurl.cc/L0kGz7 可以先看一看
05/05 10:19, 1F

05/05 10:20, 3年前 , 2F
接著就可以看 LDD3 的第八章
05/05 10:20, 2F

05/05 10:44, 3年前 , 3F
也可以google: linux 虛擬地止 實體地止 GDT LDT
05/05 10:44, 3F

05/07 03:01, 3年前 , 4F
虛擬位置相同 實體位置不同
05/07 03:01, 4F
文章代碼(AID): #1WaSmq2_ (LinuxDev)
文章代碼(AID): #1WaSmq2_ (LinuxDev)