1

我正在使用 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 nicht finden。(系统找不到请求的文件)。

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

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

编辑:我正在使用 Boost 1.45

4

1 回答 1

2

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

于 2012-09-18T13:19:42.703 回答