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



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

如果调用从标头包含的函数并且该函数正在使用全局数组,则该数组是否:

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

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

然后,每个进程都有自己的虚拟地址空间(被fork(2)延迟复制,用mmap(2)和munmap&mprotect(2)等改变,被execve(2)取代...),全局变量位于该地址空间中。

因此,你的选择2是正确的(至少在Linux上,可能在Minix上,因为它是POSIX兼容和类Unix的......

顺便说一句,static数组也是如此。

另请参阅此处提供的参考资料和链接。

相关内容

  • 没有找到相关文章

最新更新