3
說我有一個c程序(在Linux環境中),它使用共享內存向多個進程發送數據和從多個進程發送數據。我們稍後在程序中說,並行進程完成,我只有一個進程。現在,但我想fork()關閉另一個進程,但是這次我不希望該內存段被共享,我希望父進程和子進程都能夠修改這些值而不會相互影響,就像這是私人記憶。有沒有辦法做到這一點;將共享內存轉換爲私有內存,但讓它佔用虛擬內存中的相同空間,或使共享內存拷貝寫入?是否可以將一段共享內存轉換爲專用內存?
你是如何創建共享內存的?如果通過mmap(),您可能會找到一種方法將屬性更改爲MAP_PRIVATE - 儘管我不認爲有一種標準的方法來更改映射。否則,不,或者只有'longhand' - 創建一個新區域,將舊區域複製到新區域,取消舊區域映射,使用新區域。如果新玩家必須與舊玩家位於同一位置,則重複此過程以將流離失所的新玩家複製到原始位置。 – 2011-06-09 15:52:12