C ++跨进程通信

问题描述 投票:1回答:4

我有一个被加载到多个进程的dll。在这些进程/ dll之间进行通信的一种干净方法是什么。目标是发送简单的字符串。我宁愿避免sendmessage,文件io和发送string命令的地址。

c++ process communication
4个回答
5
投票

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

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


2
投票

我假设您正在为Windows编码。

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

客户端:这是要处理的数据

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

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

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


0
投票

由于其他所有人都认为Windows,我可以承担UcOs / II吗?使用消息邮箱。好吧,我想如果您在Windows上,必须要有类似的内容才能快速打开Goog​​le Mailslots


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.