为两个不同的进程创build共享内存

所以,我试图在C程序中创build一个共享内存段,所以我可以在其中编写一个简单的字符,然后从另一个C程序中读取该字符。

我一直在尝试使用calloc()malloc()但我相信这只适用于这个程序自己的heap

有没有另外的function来做同样的事情,但在RAM内存? 也许通过一个hex值? 还是我错了,这些function实际上保留所有进程可见的内存?

提前致谢。

编辑: – 我使用Windows 8.语言不限于C,可以是任何其他语言。

当您需要在隔离的进程之间传输数据时,您可以选择多种进程间通信 。 共享一块内存通常使用文件映射对象来实现。

设置文件映射对象需要以下一系列API调用:

  1. CreateFileMapping :这将创建文件映射对象。 您可以传递一个唯一的名称(例如GUID的字符串表示形式)以便从其他进程轻松访问此对象。
  2. MapViewOfFile :将文件映射的视图映射到调用进程的地址空间。 在这一点上,可以简单地通过写入内存视图来使用文件映射对象。

使用另一个进程中的现有文件映射对象需要以下调用:

  1. OpenFileMapping :打开现有文件映射对象的句柄。
  2. MapViewOfFile :将文件映射的视图映射到调用进程的地址空间。 内存视图中的内存修改反映在该文件映射的所有视图中。

请注意,跨进程通过文件映射共享内存需要这些进程之间的同步。 这个话题超出了这个答案的范围。 MSDN提供了对同步的介绍。


示例代码也可以在MSDN中使用: 创建命名的共享内存 。

没有这样做的标准方法。 如果你在Unix / Linux上工作,我会建议看看我的共享内存malloc实现,它可以在Windows机器上的Cygwin上工作,但实际上是为Unix设计的。