进程A让ProcessMapFile可用于进程B.

时间:2013-12-03 12:07:17

标签: windows ipc memory-mapped-files

一直在谷歌搜索,但无法找到答案。之前没有使用MemoryMappedFile。刚刚阅读了它们以实现基本的IPC。在我投入时间原型之前,任何人都可以告诉我以下逻辑是否有效?

我考虑过使用非持久化的内存映射文件,以便在使用后自动清理它。

  1. 进程A打开MemoryMappedFile并写入。
  2. 流程A启动流程B
  3. 流程A退出
  4. 流程B对流程A创建的OpenExisting执行MemoryMappedFile
  5. 流程B从MemoryMappedFile读取数据并进行处理......
  6. 流程A& B都知道文件的名称。

    流程A创建的文件是否会保留,直到流程B处理掉它?

    有什么机制,应该处理A而不是Dispose文件并让进程B这样做?

    如果这个逻辑不起作用,那么我正在考虑进程A等待进程B完成,但这并不理想。

    感谢任何光线下降;)

1 个答案:

答案 0 :(得分:1)

这将起作用,除了进程B需要在进程A关闭其句柄之前打开内存映射文件的句柄。原因是当最后一个句柄关闭时,内存映射文件被销毁。

(我假设我们在这里谈论Windows。)


编辑:我对此感兴趣并做了一些阅读......

执行此操作的最正确和最健壮的方法可能是进程B继承内存映射的句柄。一些链接:

我认为最后一个链接为您提供了世界上最知识渊博的Windows程序员之一的模型答案。请阅读文章下面的评论。