这是一个代码:
int i = 0;
pid_t pid;
puts("Hello, World!");
puts("");
pid = fork();
if (pid) {
i = 42;
}
printf("%p\n", &i);
printf("%d\n", i);
puts("");
并输出
Hello, World!
0x7fffc2490278
42
0x7fffc2490278
0
程序打印你好,世界!有一次,子进程不是从一开始就启动的,也没有重新定义变量。变量的地址是相同的。所以它们是相同的。但是我改变了首先执行的父进程中的 i 值,子进程没有改变。为什么?
变量的地址相同。所以它们是相同的。但是我更改了首先执行的父进程中的 i 值,子进程没有更改。为什么?
这些地址位于进程的范围内。它们是虚拟地址。地址0x7fffc2490278
在父进程中和0x7fffc2490278
子进程中的物理地址不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)