gpt4 book ai didi

c++ - 在内存映射文件时写入内存映射文件

转载 作者:行者123 更新时间:2023-11-30 16:35:14 39 4
gpt4 key购买 nike

我在磁盘上内存映射了一个文件,如下所示:

 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("打开失败\n");

如果文件是内存映射的,上面的代码总是打印“无法打开”。

最佳答案

一致共享使用的答案很简单:是,除了远程文件。 (请参阅 CreateFileMapping 和/或 MapViewOfFile 的文档)。

对于共享使用,您必须以共享模式(您未指定)打开文件 (CreateFile)。我不知道 fopen 在哪种共享模式下运行,但我怀疑您的 fopen 由于缺少 CreateFile 的共享模式而失败。如果使用共享模式时 fopen 仍然失败,您应该使用 CreateFile 代替,

关于c++ - 在内存映射文件时写入内存映射文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016459/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com