C++ 创建内存文件

C++ 创建内存文件,c++,file,winapi,memory,createfile,C++,File,Winapi,Memory,Createfile,我想在内存中创建一个临时文件,而不将其写入磁盘,该文件可以从其他进程中使用CreateFile打开读取,就像它是一个普通文件一样。 这是可能的还是必须将其写入磁盘?CreateFile将文件路径作为参数。对于能够打开文件的其他进程,文件位置应映射到系统中现有的一个设备 其中一个设备可以是RAM磁盘/设备,您可以在其中创建文件,而无需将其写入物理磁盘(内存交换除外)。但这需要安装和激活这样的(虚拟)设备 如果您只需要在进程之间共享内存,那么看看下面的例子 您所要求的通常不能用CreateFile

我想在内存中创建一个临时文件,而不将其写入磁盘,该文件可以从其他进程中使用
CreateFile
打开读取,就像它是一个普通文件一样。


这是可能的还是必须将其写入磁盘?

CreateFile将文件路径作为参数。对于能够打开文件的其他进程,文件位置应映射到系统中现有的一个设备

其中一个设备可以是RAM磁盘/设备,您可以在其中创建文件,而无需将其写入物理磁盘(内存交换除外)。但这需要安装和激活这样的(虚拟)设备


如果您只需要在进程之间共享内存,那么看看下面的例子

您所要求的通常不能用
CreateFile()
来完成(除非您使用RAMdisk方法),但可以用
CreateFileMapping()
MapViewOfFile()
来完成。可以为映射对象指定一个名称,以便它可以跨进程边界共享,然后多个进程可以根据需要打开它们自己的视图。

@AmericanPatriot,因为我使用的是Windows API,也称为WinAPI。@JacquesDeooge
fmemopen
,在Windows上似乎不可用。是的,POSIX就是这样。@JacquesDeooge
fmemopen
返回映射到进程内存空间的
FILE*
——您不能在多个进程之间共享。为了共享,你需要一些可以通过FS中的路径访问的东西——这是众所周知的。那个链接是无用的。Windows上的共享内存使用
CreateFileMapping
MapViewOfFile
完成。