2016-01-17 37 views
0

我在Minix寫了一個信號量的實現,我不確定一件事情。全局變量及其在文件C之間的文件範圍

如果呼叫從一個首標包括一個功能和功能是使用一個全局數組,該數組:

  1. 同樣對於該調用該函數的所有進程?
  2. 對於調用該函數的每個進程都有所不同?
  3. 每次調用該函數都會有所不同嗎?

回答

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

+0

謝謝,這似乎合乎邏輯。任何關於如何在fork或exec時工作的想法?分叉進程是否會繼承數組? –

+1

@m_highlanderish:C不知道porocesses。這已經回答你的問題。請注意,它是更廣泛的問題「什麼是過程」的一部分。你應該讀一讀。 – Olaf