【发布时间】:2016-12-11 19:06:33
【问题描述】:
我有以下代码:
#include<stdio.h>
#include<unistd.h>
int main()
{
int a=0;
printf("before: %d %p\n",a,&a);
int t=fork();
if(t==0)
{
a=a+5;
printf("child: %d %p\n",a,&a);
}
else
{
a=a+10;
printf("parent: %d %p\n",a,&a);
}
//printf("both: %d %p\n",a,&a);
return 0;
}
为什么所有地址都打印相同?我认为调用 fork 时会创建变量的新副本。它与虚拟地址和物理地址有什么关系吗?如果是这样,相同的虚拟地址如何映射到不同的物理地址?
【问题讨论】:
标签: c operating-system fork