簡體   English   中英

在內存映射文件中寫入內存映射文件

[英]writing to memory mapped file while it is memory-mapped

我已將內存映射到磁盤上的文件,如下所示:

 const wchar_t fileName[] = L"temp.txt";
 HANDLE h = CreateFile(fileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 HANDLE fileMap = CreateFileMapping(h, NULL, PAGE_READWRITE, 0x0, 1024, NULL);
 char *ptr = (char *)MapViewOfFile(fileMap, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 1024)

在內存映射的情況下,是否可以通過另一個進程寫入同一文件?

FILE *fp = fopen("temp.txt", "w+"); if(NULL == fp) printf("Failed to open\\n");

如果文件是內存映射的,則上面的代碼始終顯示“無法打開”。

一致共享使用的答案很簡單:是, 遠程文件除外。 (請參閱CreateFileMapping和/或MapViewOfFile文檔)。

為了共享使用,您必須以共享模式(未指定)打開文件( CreateFile )。 我不知道fopen在哪個共享模式下運行,但是我懷疑您的fopen失敗是因為缺少CreateFile共享模式。 如果在使用共享模式時fopen仍然失敗,則應改用CreateFile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM