我一直在研究几个C ++项目,其中涉及使用窗口消息来做一些简单的IPC。 在许多情况下,通过将数据放入共享内存段,然后使用SendMessage调用将指针传递到共享内存,会将一些额外数据与窗口消息一起传递。 重新做这件事总是令人讨厌,但在解决这个沉闷的重复之前,我想问一下发明又一个IPC系统:
是否有一个满足标准的现有框架?
值得一提的是,COM对我们来说并不是一个真正的select,因为使用COM是非常痛苦的(除非你开始使用我们希望避免的各种包装)。 我不需要接口和所有的东西, 只是一个方便的方式来发送消息(在最好的情况下任意)来回参考一些error handling。 另外,我放弃了比我更需要的DBUS。
虽然不符合你所有的标准,但ZeroMQ(http://www.zeromq.org/)可能值得一看。 它小巧,简单,快捷。 它也给你消息传递的语义,这可能会有所帮助,取决于你正在使用的应用程序的类型
我已经成功使用内存映射文件进行进程间通信。 我喜欢它,主要是因为它很简单,快速,并可以在任何版本的窗口,你可能会遇到(嗯,我怀疑它会在Win9x上工作,但….)
在http://msdn.microsoft.com/en-us/library/ms810613.aspx上有一篇基本的文章(1993年的writtin!),展示了如何使用它们。
这个问题在这个答案的时候已经快3岁了,但我不敢相信没有人正式提出Boost.Interprocess 。
WINAPI机制的轻量级,IPC和C ++包装是可用的。