文件映射打开(Windows)
File mapping opening (Windows)
如何在Windows上正确打开/使用文件映射,并能够在没有文件映射的情况下从另一个进程进行写入;
例如,进程A写入大的日志文件,它打开文件,将新数据写到最后,或者用新数据重写它。
进程B并行打开此文件作为文件映射,并不时读取内存页以进行更新,而不关闭文件映射。
请不要问我为什么要做我上面解释的逻辑。我需要知道能做到吗?
没有什么可以阻止您将文件映射对象与您正在使用常规文件系统功能(ReadFile
、WriteFile
等)更新的文件相关联。但您不会喜欢结果。如果其他进程通过文件映射功能更新文件,Windows保证文件映射视图是一致的。当文件以其他方式更新时,它不会做出这样的保证。事实上,它几乎可以保证文件映射视图显示的内容与文件的实际内容不匹配。
所以,是的,你可以这样做。但您不应该这样做,因为无法保证映射视图看到的是文件中的实际内容。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C/C++ Windows 或 Linux 将随机内存块映射成连续的顺序
- 如何在Windows上将BYTE数组映射为FILE *
- 如何在Windows和更高版本上保留内存,并将文件映射到内存中
- 如何使Windows ListView控件和它们映射到的对象保持同步
- 在 Windows 应用商店应用中映射 Direct3D11 中的动态缓冲区
- Windows 文件:同时使用 ReadFile 和映射
- 如何在 Windows 映射程序的 DLL 之前保留内存区域?
- Windows CreateFileMapping:具有相同支持文件的不同文件映射对象
- 在windows上打开并获取现有内存映射文件的确切大小
- 文件映射打开(Windows)
- Winsock -> WinRT Windows.Networking.Sockets -- 映射错误代码
- boost::posix_time::ptime存储在Windows共享内存映射中是否安全?
- 将Windows数据类型映射到.net
- 在Windows Mobile中动态分配内存映射文件大小
- 设置Windows组网映射的标签
- c++代码模拟Windows下的虚拟映射网络驱动器