全局变量及其在文件之间的范围

时间:2016-01-17 15:13:04

标签: c scope global-variables

我在Minix中编写了一个信号量的实现,我不确定一件事。

如果从头部调用一个函数并且该函数正在使用全局数组,则是该数组:

  1. 调用该函数的所有进程都一样吗?
  2. 每个调用该函数的进程都不同?
  3. 该功能的每次调用都不同?

1 个答案:

答案 0 :(得分:0)

我不确定C99标准中是否提到process的概念。让我们假装你的C实现是在Linux上,或者至少是一个POSIX。

然后,每个流程都有自己的virtual address space(由fork(2)延迟复制,更改为mmap(2)& munmap& mprotect(2)等...被execve(2) ....替换,全局变量位于该地址空间中。

因此,您的选择2是正确的(至少在Linux上,可能在Minix上,因为它符合POSIX并且类似于Unix ......)。

顺便说一句,它与static数组相同。

另请参阅here给出的参考和链接。

相关问题