创建了两个进程。
他们每个人都以输入 0 调用函数 A
(函数 A 在其他一些 .c 文件中)。
变量 x 需要是全局的,但是,它应该是每个进程的私有(private)变量。
因为它是 x = y
似乎每个进程都有自己的 x。我想知道为什么?为什么 z 在两个进程之间共享?
int x;
int z;
void A(int y)
{
x = y;
x++;
z++;
B();
}
void B()
{
x--;
}
在主程序中
//2 process created and each of them call A(0)
最佳答案
您混淆了进程和可执行文件。
每个进程都是一个独特的实体,可以将来自一个或多个文件的二进制可执行指令和数据映射到其内存中。
即使是同一可执行文件的 2 个实例(进程)也将拥有所有变量的各自副本。即变量不共享。
进程之间的通信和共享数据是通过各种 IPC 机制实现的,详见 excellent IPC guide on unix systems by beej .
关于C:进程的私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094628/