Что я делаю не так с boost :: interprocess :: message_queue? - PullRequest
2 голосов
/ 11 августа 2010

Я создал 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

Раньше он работал нормально с Boost-версией до 1.42, но больше не работал.Документация Boost's message_queue не изменилась, поэтому никакой помощи оттуда нет.Что я тут не так делаю?

1 Ответ

3 голосов
/ 14 декабря 2010

Вы не можете назвать межпроцессный механизм с '-' внутри. В документации написано:

* 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...
...