3
说我有一个c程序(在Linux环境中),它使用共享内存向多个进程发送数据和从多个进程发送数据。我们稍后在程序中说,并行进程完成,我只有一个进程。现在,但我想fork()关闭另一个进程,但是这次我不希望该内存段被共享,我希望父进程和子进程都能够修改这些值而不会相互影响,就像这是私人记忆。有没有办法做到这一点;将共享内存转换为私有内存,但让它占用虚拟内存中的相同空间,或使共享内存拷贝写入?是否可以将一段共享内存转换为专用内存?
你是如何创建共享内存的?如果通过mmap(),您可能会找到一种方法将属性更改为MAP_PRIVATE - 尽管我不认为有一种标准的方法来更改映射。否则,不,或者只有'longhand' - 创建一个新区域,将旧区域复制到新区域,取消旧区域映射,使用新区域。如果新玩家必须与旧玩家位于同一位置,则重复此过程以将流离失所的新玩家复制到原始位置。 – 2011-06-09 15:52:12