因此,我正在尝试在 C 程序中创建一个共享内存段,例如,我可以在其中写入一个简单的字符,然后从另一个 C 程序中读取该字符。
我一直在尝试使用calloc()
,malloc()
但我相信这仅适用于该程序自己的heap
.
是否有另一个功能可以做同样的事情,但在RAM
内存中?也许通过十六进制值?还是我错了,这些函数实际上保留了所有进程可见的内存?
提前致谢。
编辑:-我使用的是 Windows 8。-语言不限于 C,可以是任何其他语言。
因此,我正在尝试在 C 程序中创建一个共享内存段,例如,我可以在其中写入一个简单的字符,然后从另一个 C 程序中读取该字符。
我一直在尝试使用calloc()
,malloc()
但我相信这仅适用于该程序自己的heap
.
是否有另一个功能可以做同样的事情,但在RAM
内存中?也许通过十六进制值?还是我错了,这些函数实际上保留了所有进程可见的内存?
提前致谢。
编辑:-我使用的是 Windows 8。-语言不限于 C,可以是任何其他语言。
当您需要在隔离的进程之间传输数据时,您可以选择许多进程间通信。共享一块内存通常使用文件映射对象来实现。
设置文件映射对象需要以下 API 调用序列:
使用来自另一个进程的现有文件映射对象需要以下调用:
请注意,通过跨进程的文件映射共享内存需要这些进程之间的同步。这个话题超出了这个答案的范围。MSDN 提供了对同步的介绍。
没有标准的方法可以做到这一点。如果您在 Unix/Linux 上工作,我建议您查看我的共享内存 malloc实现,它在 Windows 机器上的 Cygwin 上工作,但实际上是为 Unix 设计的。