2

我有一个生产者进程,它写入一个 mmap'd 文件和一个从中读取的消费者进程。这是在 Linux 上。

如果生产者对 mmap 进行了更改并且没有立即刷新,那么当消费者访问它时会发生什么?它会从磁盘中获取旧版本,还是足够聪明地获取未刷新的页面?

4

1 回答 1

2

mmap()手册页

MAP_SHARED

与映射此对象的所有其他进程共享此映射。存储到区域相当于写入文件。在调用 msync(2) 或 munmap(2) 之前,该文件实际上可能不会被更新。

底线:如果您在调用mmap(). 根据文档,您必须使用MAP_SHAREDor MAP_PRIVATE,它控制与映射同一文件区域的其他进程有关的行为。

于 2011-04-13T10:13:06.103 回答