C:进程的私有(private)变量

标签 c process static mutex private

创建了两个进程。

他们每个人都以输入 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/

相关文章:

Java静态修饰符查询

c - 为什么在从文件加载期间起始指针会发生变化?

java - "inherently thread-safe"是什么意思?

c# - Process.Start() 什么时候可以返回 null?

linux - 从 TID 获取 PID 的预制方法

swift - 如果 "static"关键字用于在 swift 中定义常量/不可变,那么 "let"关键字有什么用?

c - 如何在 C 中为字符串数组动态分配内存?

c++ - 从 blender 导入的模型上的渐变颜色

c# - 如何从 ServiceController 确定 Windows.Diagnostics.Process

php - 无法增加静态类变量 PHP