Windows上的共享内存,可以通过单独的进程访问(读取和写入)

时间:2009-09-02 10:31:15

标签: c windows

我可以在Windows上使用共享内存,以便拥有一个可供多个独立进程使用的公共内存区域吗?

上下文:

将unix应用程序移植到Windows,其中包含:    - 创建许多共享内存区域的“设置”过程。    - 一组其他进程(在安装过程已经完成时运行)     读取(偶尔写入)由...准备的内存区域     设置过程


我已经尝试过CreateFileMapping(INVALID_HANDLE_VALUE, ...)/OpenFileMapping但是一旦创建过程退出,共享内存似乎就会被释放。

我应该创建真实的(即在文件系统上)文件并打开它们而不是使用INVALID_HANDLE_VALUE吗?

2 个答案:

答案 0 :(得分:4)

Windows不支持创建一个全局文件映射对象,该对象不存在任何持有句柄的进程,这解释了为什么使用匿名部分的CreateFileMapping不起作用。

但是,正如您所建议的那样,您可以在磁盘上创建实际文件,并根据需要使用CreateFileMapping映射,并且进程可以共享磁盘文件支持的内存。您的流程只需要知道在哪里查找备份文件。

答案 1 :(得分:0)

Boost有一个可用于共享内存的库: Boost.Interprocess