作者gowrite (gowrite)
看板LinuxDev
标题[问题] 关於 fork() 之後的记忆体位址
时间Wed May 5 06:35:30 2021
大家好,自学 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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1620167732.A.0BF.html
2F:→ leolarrel: 接着就可以看 LDD3 的第八章 05/05 10:20
3F:→ leolarrel: 也可以google: linux 虚拟地止 实体地止 GDT LDT 05/05 10:44
4F:推 dces4212: 虚拟位置相同 实体位置不同 05/07 03:01