如何在Windows中使用Boost Interprocess Message Queue?

时间:2012-09-14 12:19:26

标签: c++ boost boost-interprocess

我正在使用Boost Interprocess实现进程间通信。 作为测试,我从boost documentation获得了示例。

第一个进程(创建消息队列)使用CreateProcess(NULL, (LPSTR)commandStream.str().c_str(), NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi)

启动另一个进程(应该从队列接收消息)

第一个进程使用message_queue mq(create_only, "message_queue", 100, sizeof(int))创建队列。

不幸的是,message_queue mq(open_only, "message_queue")会引发interprocess_exception。该例外包含描述 Das System kann die angegebene Datei nicht finden。(系统无法找到所请求的文件)。

当队列的创建和打开都在一个进程中完成时,不会抛出任何异常,并且通信工作正如文档中所述。

有人知道什么可能导致异常以及我如何解决它?

编辑:我正在使用Boost 1.45

1 个答案:

答案 0 :(得分:2)

异常是由this ticket中描述的Boost Interpocessing库中的问题引起的。该错误已经重新打开,我不完全清楚Boost代码是如何更改的,以及如何将解决方法应用于Boost 1.45。 但是,在升级到Boost 1.51之后,我现在可以按预期使用Message Queue。