【问题标题】:File mapping opening (Windows)文件映射打开(Win​​dows)
【发布时间】:2013-07-16 04:24:48
【问题描述】:

如何在 Windows 上正确打开/使用文件映射,并能够从另一个没有文件映射的进程写入文件;

例如进程A写入大日志文件,它打开文件,将新数据写入末尾,或者用新数据重写。

进程 B 并行打开此文件作为文件映射,并不时读取内存页面以进行更新而不关闭文件映射。

请不要问我为什么要做上面解释的逻辑。我想知道可以吗?

【问题讨论】:

标签: c++ file winapi virtual-memory file-mapping


【解决方案1】:

没有什么可以阻止您将文件映射对象与您正在使用普通文件系统函数(ReadFileWriteFile 等)更新的文件关联起来。但你不会喜欢结果。如果其他进程通过文件映射函数更新文件,Windows 保证文件映射视图是一致的。当文件以其他方式更新时,它不做这样的保证。事实上,它几乎可以保证文件映射视图显示的内容与文件的实际内容不匹配。

所以,是的,您可以这样做。但您不应该这样做,因为您无法保证映射视图看到的就是文件中的实际内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多