C ++跨进程通信

时间:2011-07-28 00:19:56

标签: c++ process communication

我有一个加载到多个进程的DLL。 什么是一个干净的方式来沟通这些进程/ dll。 发送简单字符串是目标。 我宁愿避免sendmessage,file io和发送字符串命令的地址。

4 个答案:

答案 0 :(得分:5)

我会调查shared memory。在MSDN上有一个不错的example

请记住,就像在同一进程中使用线程一样,对共享内存的访问不是序列化的。您需要某种形式的同步(例如,命名的互斥锁)来序列化对内存块的访问。

答案 1 :(得分:2)

我假设您正在为Windows编码。

如果您的通信是流程之间的点对点,则命名管道可能是最佳解决方案。您可以轻松设计客户端/服务器式协议,例如:

客户:这是要处理的数据

服务器:以下是处理您的请求的结果

命名管道也可以轻松移植到其他点对点机制,如套接字或匿名管道。

如果您的通信不是点对点的,并且您需要在多个进程之间维护公共共享数据,那么安德烈建议的内存映射文件是更好的选择,但肯定需要互斥保护才能可靠。

答案 2 :(得分:0)

由于其他人都认为Windows可以假设UcOs / II吗?使用消息邮箱。好吧,我想如果你在Windows上必须有类似的快速谷歌出现Mailslots

答案 3 :(得分:0)

Microsoft对进程间通信的不同方法有相当全面的概述。

The article解释了最常用方法的优缺点。其中有

  • 数据复制(消息传递)
  • 文件映射(命名共享内存)
  • 管道
  • 远程过程调用 还有更多

本文的每个部分都提供了指向更多文档的链接,包括一些非常有用的代码示例