我知道我们可以使用文件映射在两个进程之间共享内容,但这需要相同的文件映射对象。
如果每个进程使用自己的文件句柄创建自己的文件映射对象,但每个文件句柄都指向同一个文件,会发生什么?
谢谢张
我知道我们可以使用文件映射在两个进程之间共享内容,但这需要相同的文件映射对象。
如果每个进程使用自己的文件句柄创建自己的文件映射对象,但每个文件句柄都指向同一个文件,会发生什么?
谢谢张
从文档:
创建文件映射对象实际上并不将视图映射到进程地址空间。MapViewOfFile 和 MapViewOfFileEx 函数将文件视图映射到进程地址空间。
除了一个重要的例外,从由同一文件支持的任何文件映射对象派生的文件视图在特定时间是连贯的或相同的。对于进程内的视图和由不同进程映射的视图,一致性得到保证。
异常与远程文件有关。尽管 CreateFileMapping 可以处理远程文件,但它并不能保持它们的一致性。例如,如果两台计算机都将文件映射为可写,并且都更改了同一页面,则每台计算机只能看到自己对该页面的写入。当数据在磁盘上更新时,它不会被合并。