情况:
如果处理过& b每个使用mmap()
创建共享内存映射,使用相同的共享内存对象/shm-a
作为备份文件。
我猜:
我原本以为只有1份内存,它会处理写入/读取。
但后来我觉得实际上有3份副本,对吗?每个进程都有一个由mmap()
创建的副本,第三个副本是共享内存对象,用于在进程之间进行同步,但我不确定。
问题是:
fd
直接读取/写入共享内存对象?答案 0 :(得分:4)
那么有多少份内存? 1或n + 1(其中n是过程计数)
只有一份共享内存。
相同的物理内存映射到不同的进程。但它可能会映射到不同的地址。
通过fd直接读取/写入共享内存对象的进程是否合适?
是的。也就是说,实际上是共享内存的目的。一个进程写入共享内存的内容可以由另一个进程读取。这是一种非常快速的IPC形式。但是你必须要小心你如何使用它。特别是,您需要担心并发访问,并在共享内存中共享指针。