叉和局部变量

时间:2018-11-18 17:31:41

标签: c fork cpu-registers

我正在尝试通过以下程序来了解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的值。

0 个答案:

没有答案