我可以在Windows上使用共享内存,以便拥有一个可供多个独立进程使用的公共内存区域吗?
上下文:
将unix应用程序移植到Windows,其中包含: - 创建许多共享内存区域的“设置”过程。 - 一组其他进程(在安装过程已经完成时运行) 读取(偶尔写入)由...准备的内存区域 设置过程
我已经尝试过CreateFileMapping(INVALID_HANDLE_VALUE, ...)/OpenFileMapping
但是一旦创建过程退出,共享内存似乎就会被释放。
我应该创建真实的(即在文件系统上)文件并打开它们而不是使用INVALID_HANDLE_VALUE
吗?
答案 0 :(得分:4)
Windows不支持创建一个全局文件映射对象,该对象不存在任何持有句柄的进程,这解释了为什么使用匿名部分的CreateFileMapping
不起作用。
但是,正如您所建议的那样,您可以在磁盘上创建实际文件,并根据需要使用CreateFileMapping
映射,并且进程可以共享磁盘文件支持的内存。您的流程只需要知道在哪里查找备份文件。
答案 1 :(得分:0)
Boost有一个可用于共享内存的库: Boost.Interprocess