我正在尝试通过以下程序来了解fork()功能。 这听起来类似于fork() and changing local variables? 但是在观察了变量的地址之后,我无法说服自己理解正确。
void forkexample()
{
int x = 1;
if (fork() == 0) {
++x;
printf("Child has x = %p, ' ',%d \n", &x,x);
}
else{
x += 2;
printf("Parent has x = %p, ' ',%d \n", &x,x);
}
}
int main()
{
forkexample();
return 0;
}
示例输出:
Parent has x = 0x7ffff25e71f4, ' ',3
Child has x = 0x7ffff25e71f4, ' ',2
我的问题是,如果子进程和父进程都在修改相同的地址,那么在父级将其设置为3之后,子级为何仍会看到2的值。