2

我的文件(sample.txt)有 10 个字符。我以写模式打开文件,做了一个createfilemapping("mymapping"). 然后我通过 getchar 持有该过程。然后打开另一个执行以下操作的进程

openfilemapping("mymapping"),
char*k =  (char*)mapviewoffile 

现在我可以访问 sample.txt 的值并通过 k 更改它。但是,如何在文件中插入/附加一条另外 10 个字符。

4

1 回答 1

3

共享内存映射在创建时大小固定。您将需要CreateFileMapping使用更大的映射大小再次调用。这将自动扩展文件,此时您可以MapViewOfFile再次扩展,并写入您想要的任何数据。请注意,您将需要更改文件映射的名称,除非您首先关闭它的所有句柄和映射,以便破坏文件映射。

顺便说一句,使用磁盘文件支持的命名文件映射是不寻常的(但当然不是非法的)。一般来说,如果你正在映射一个真实的文件,你会传递NULL给. 当您想要创建没有后备文件的共享内存映射时,您将传入一个名称 - 也就是说,将是并且是共享内存段的名称。lpNameCreateFileMappinghFileNULLlpName

于 2011-02-15T12:08:10.400 回答