Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个生产者进程,它写入一个 mmap'd 文件和一个从中读取的消费者进程。这是在 Linux 上。
如果生产者对 mmap 进行了更改并且没有立即刷新,那么当消费者访问它时会发生什么?它会从磁盘中获取旧版本,还是足够聪明地获取未刷新的页面?
从mmap()手册页:
mmap()
MAP_SHARED 与映射此对象的所有其他进程共享此映射。存储到区域相当于写入文件。在调用 msync(2) 或 munmap(2) 之前,该文件实际上可能不会被更新。
MAP_SHARED
与映射此对象的所有其他进程共享此映射。存储到区域相当于写入文件。在调用 msync(2) 或 munmap(2) 之前,该文件实际上可能不会被更新。
底线:如果您在调用mmap(). 根据文档,您必须使用MAP_SHAREDor MAP_PRIVATE,它控制与映射同一文件区域的其他进程有关的行为。
MAP_PRIVATE