gpt4 book ai didi

c - fork 后的变量

转载 作者:太空狗 更新时间:2023-10-29 17:27:34 25 4
gpt4 key购买 nike

代码如下:

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

程序打印你好,世界!有一次,子进程不是从头开始的,也不是重新定义变量。变量地址相同。所以他们是一样的。但是我改变了我在先执行的父进程中的值,它并没有改变子进程。为什么?

最佳答案

Adresses of variables are same. So they are same. But I change i's value in parent process which is executed first, it didn't change for child process. Why?

地址在进程范围内。它们是虚拟地址。父进程中的地址0x7fffc2490278和子进程中的地址0x7fffc2490278是不同的物理地址。

关于c - fork 后的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com