C 当两个进程写入mmaped文件的同一部分时会发生什么情况?
我正在编写一个C程序,它使用C 当两个进程写入mmaped文件的同一部分时会发生什么情况?,c,linux,posix,mmap,C,Linux,Posix,Mmap,我正在编写一个C程序,它使用mmap系统调用,运行在Linux 3.12 64位上 如果有两个进程使用读/写访问权限对磁盘文件的同一区域进行MMA,然后同时修改两个进程中的区域内容 一个进程是否可以在msync之前或之后看到(读取)另一个进程更改的数据 如果另一个进程可以看到更新,那么Linux mmap实现是否会在更新之前做出保证 是的,这就是内存映射的目的之一:作为“瞬时IPC”的一种形式 您必须设置地图共享标志: 如果您希望使用共享内存来实现此目的,我将考虑SHMITIT()/SH
mmap
系统调用,运行在Linux 3.12 64位上
如果有两个进程使用读/写访问权限对磁盘文件的同一区域进行MMA,然后同时修改两个进程中的区域内容
- 一个进程是否可以在msync之前或之后看到(读取)另一个进程更改的数据
- 如果另一个进程可以看到更新,那么Linux mmap实现是否会在更新之前做出保证
是的,这就是内存映射的目的之一:作为“瞬时IPC”的一种形式 您必须设置地图共享标志:
如果您希望使用共享内存来实现此目的,我将考虑SHMITIT()/SHIMA()API来代替:
上述情况适用于任何*nix变体,包括Linux和AIX。竞争条件和最终未定义的行为。您需要同步对内存映射文件的访问。