2013-07-17 27 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