我对boost :: interprocess :: message_queue做错了什么?

时间:2010-08-11 15:03:45

标签: c++ boost message-queue

我通过以下方式创建了一个boost :: message_queue:

namespace bipc = boost::interprocess;

...

try {
    bipc::message_queue::remove("EDBA90AC-289D-4825-98D9-F85185041676");

    // The below throws exception, no matter what's the name of the queue...

    boost::shared_ptr<bipc::message_queue> mq(new bipc::message_queue(bipc::create_only, "EDBA90AC-289D-4825-98D9-F85185041676", 32767, 256));

    ...
} catch (std::exception &e) {
    std::cout << "exception: " << e.what() << std::endl;
}

现在,我无法让它工作,因为mq - 每次出现以下异常时都会抛出

exception: invalid string position

这曾经在1.42之前的Boost版本中正常工作,但现在不再适用了。 Boost的message_queue文档没有改变,所以没有帮助。我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您无法在内部使用' - '命名进程间机制。它写在文档中:

* Starts with a letter, lowercase or uppercase, such as a letter from a to z or from A to Z. Examples: Sharedmemory, sharedmemory, sHaReDmEmOrY...
* Can include letters, underscore, or digits. Examples: shm1, shm2and3, ShM3plus4...