试图理解分叉以及 parent 和 child 进程之间的关系

Trying to understand forking and the relationship between the parent and the child process

所以我试图了解分叉过程和以下程序。我有一个由 parent 和 child 进程操纵的全局整数。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <cstdlib> 


using namespace std;


int global = 0;

int main()
{

    int fork_return;


    fork_return = fork();

    if(fork_return == 0)
    {
        global++;
        printf("Global value in child is: %d \n", global);
    }
    else
    {
        global--;
        printf("Global value in parent is: %d \n", global);
    }


    return 0;
}

在child进程里面,global是1

在parent进程中,全局是-1

我的问题是:我们怎么会有一个全局变量,child 发生了什么基本上对 parent 隐藏了,反之亦然?

我的理解是:child 中发生的事情对 parent 是隐藏的,反之亦然。

为什么会出现这种行为?

在调用 fork 时,父项和子项具有相同的内存和文件描述符视图。在那之后,他们每个人都可以自由地走自己的路。否则 fork 操作将无法使用,因为一个进程中的任何更改都会破坏另一个进程正在做的事情。