if (fork() == 0) { a = a + 5; printf(“%d, %d\n”, a, &a);
}
else {
a = a – 5; printf(“%d, %d\n”, a, &a);
u = x + 10 且 v = y
u = x + 10 且 v != y
u + 10 = x 且 v = y
u + 10 = x 且 v != y
fork()后,父子进程变量地址一致:
子进程“继承”父进程的变量,其地址总是一样的,因为在fork时整个虚拟地址空间被复制,但是虚拟地址空间所对应的物理内存却没有复制(这个时候父子进 程中变量 x对应的虚拟地址和物理地址都相同)。等到虚拟地址空间被写时,对应的物理内存空间被复制(这个时候父子进程中变量 i 对应的虚拟地址还是相同的,但是物理地址不同),也就是"写时复制"。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题