我正在 Minix 中编写信号量的实现,但不确定一件事。
如果调用从标头包含的函数并且该函数正在使用全局数组,则该数组是否:
- 调用该函数的所有进程都一样?
- 调用该函数的每个进程都不同?
- 该函数的每次调用都不同?
我不确定 C99 标准中是否提到了过程的概念。让我们假设你的C实现是在Linux上,或者至少是一个POSIX的。
然后,每个进程都有自己的虚拟地址空间(被fork(2)延迟复制,用mmap(2)和munmap
&mprotect(2)等改变,被execve(2)取代...),全局变量位于该地址空间中。
因此,你的选择2是正确的(至少在Linux上,可能在Minix上,因为它是POSIX兼容和类Unix的......
顺便说一句,static
数组也是如此。
另请参阅此处提供的参考资料和链接。