Kou*_*ros 4 posix shared-memory
我想使用 POSIX 共享内存,我的问题是关于调用msync()和munmap()之后的使用情况mmap(MAP_SHARED)。
msync()?msync()?msync()?我的印象msync()是仅适用于将更改应用于底层文件而不是共享内存。
POSIX
看msync(2):
msync()使用MS_ASYNC或调用MS_SYNC。msync()close()munmap()这允许旧的实现使用单独的缓存来进行内存映射(也称为页面缓存)和文件 I/O(又称为缓冲区缓存)。
现代实施
现代实现(例如现代Linux)通常实现“统一虚拟内存模型”,它使用相同的缓存来进行内存映射和I/O。POSIX 或 SUSv3 不需要它。
在这样的实现中:
msync()之前未调用,则不会删除更改。close()munmap()MS_ASYNC是一个空操作。MS_SYNC就像fsync()。在 Linux 中,msync()它只是另一个接口,fsync()仅此而已。请参阅msync(2)手册页和此线程。
参考
请参阅“Linux 编程接口”的“49.4.4 内存保护和文件访问模式交互”部分。