2013-07-17 26 views
0

如何在Windows上正确打开/使用文件映射,并且能够在没有文件映射的情况下从另一个进程写入文件;文件映射打开(Win​​dows)

例如过程A大的日志文件,它打开文件,新的数据写入结束后,或用新的数据重写。

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

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

+0

我通常使用[Boost.Interprocess](http://www.boost.org/doc/libs/1_54_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_file)库。它易于使用和多平台。 – Johny

回答

1

没有什么能够阻止您使用与正常文件系统功能(ReadFile,WriteFile等)更新的文件关联的文件映射对象。但是你不会喜欢这个结果。窗户保证了文件映射视图将是一致的,如果其他进程更新过的文件映射功能的文件。当文件以其他方式更新时,它没有这样的保证。事实上,它几乎保证了哪些文件映射视图显示将不匹配文件的实际内容。

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

+0

吉姆谢谢你! – Edward83