c++跨进程通信
C++ communicate across processes
我有一个加载到多个进程的dll。在这些进程/dll之间进行通信的干净方式是什么?目标是发送简单的字符串。我宁愿避免sendmessage, fileio和发送字符串命令的地址。
我会查看共享内存。在MSDN上有一个很好的例子。
请记住,就像在同一个进程中使用线程一样,对共享内存的访问不是序列化的。你需要某种形式的同步(例如命名互斥锁)来序列化对内存块的访问。
我想你是在为Windows编写代码。
如果进程之间的通信是点对点的,那么命名管道可能是最好的解决方案。您可以轻松地设计客户机/服务器风格的协议,例如:客户端:这里是要处理的数据
服务器:这是处理您的请求的结果
命名管道还可以很容易地移植到其他点对点机制,如套接字或匿名管道。如果您的通信不是点对点的,并且您需要在多个进程之间维护公共共享数据,那么Andre'建议的内存映射文件是更好的选择,但肯定需要互斥保护以确保可靠。
既然其他人都假设Windows,我可以假设UcOs/II吗?使用消息邮箱。好吧,我想如果你用的是windows系统,一定会有类似的东西——快速谷歌搜索邮箱。
Microsoft对进程间通信的不同方法有一个非常全面的概述。
这篇文章解释了最常用方法的优缺点。其中
- 数据复制(消息传递) 文件映射(命名共享内存)管道
- 远程过程调用等等。
文章的每个部分都提供了进一步文档的链接,包括一些非常有用的代码示例。
相关文章:
- 进程间通信堆内存
- Win32 进程间通信分配
- Electron应用程序和Win32本机桌面应用程序之间的进程间通信
- 进程间通信 - C# 和C++.对路径的访问被拒绝
- 子进程通信.C++
- 基于pthread_mutex的进程间通信不起作用
- Python和C++之间使用本地文件套接字的进程间通信
- Boost::ASIO:使用两个进程的双向通信
- 如何在进程间通信中获取其他终结点的进程 ID
- 进程内通信 WinRT(消息替换)
- 使用物理文本文件的进程间通信
- Mac 上高带宽数据流最有效的进程间通信方法是什么?
- 进程间通信 -- 在共享内存中锁定互斥体
- 进程间通信 CUDA
- 从 c++ 程序到正在运行的 R 进程进行通信
- 使用COM在Windows上的本地计算机上进行进程间通信
- 独立 DLL 之间的内部进程通信
- Boost:是否存在用于仅线程通信的进程间消息队列机制
- 具有进程间通信功能的服务器-客户端日志记录体系结构.你知道解决方案吗?
- 是否有在C++和Javascript中实现的高级进程间通信API