如何使用Boost进程间消息队列for Windows



我正在使用Boost Interprocess实现进程间通信。作为一个测试,我从boost文档中获取了这个例子。

第一个进程(创建消息队列)使用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 not finden(系统找不到请求的文件)。

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

有人知道是什么原因导致异常,以及我如何解决它吗?

编辑:我正在使用Boost 1.45

异常是由Boost内处理库中的问题引起的,如本票证中所述。这个错误已经重新打开,我还不完全清楚Boost代码是如何更改的,以及如何为Boost 1.45应用变通方法。然而,在升级到Boost 1.51之后,我现在可以按预期使用消息队列了。

最新更新