试图理解分叉以及 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
操作将无法使用,因为一个进程中的任何更改都会破坏另一个进程正在做的事情。
所以我试图了解分叉过程和以下程序。我有一个由 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
操作将无法使用,因为一个进程中的任何更改都会破坏另一个进程正在做的事情。