如何使用Boost进程间消息队列for Windows
How to use Boost Interprocess Message Queue 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之后,我现在可以按预期使用消息队列了。
相关文章:
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何在C++中从两个单独的for循环中添加两个数组
- boost::进程间消息队列引发错误
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 在Linux for Windows上编译C++代码时出错
- 调用专用模板时出错"no matching function for call to [...]"
- Android NDK传感器向事件队列报告奇怪的间隔
- 为什么我的for循环不能正确获取argv
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 为什么我不能在 FOR LOOP 中使用 i/10,C++?
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在基于范围的for循环中使用结构化绑定声明
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 通过for循环使用用户输入填充列表
- C++ 数据结构队列:使用 for 循环查找队列中最大的元素
- 优先级队列(使用 pairs<int,int> ) 根据 for 循环迭代器的顶级元素
- 可等待队列 - "no matching function for call to"
- 如何使用Boost进程间消息队列for Windows