Как использовать Boost Interprocess Message Queue для Windows?

Я реализую межпроцессное взаимодействие с использованием Boost Interprocess.
В качестве теста я взял пример из форсировать документацию.

Первый процесс (который создает очередь сообщений) запускает другой (который должен получать сообщения из очереди), используя 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

1

Решение

Исключение вызвано проблемой в библиотеке Boost Interpocessing, как описано в этот билет. Ошибка была вновь открыта, и мне не совсем понятно, как был изменен код Boost и как можно применить обходной путь для Boost 1.45.
Однако после обновления до Boost 1.51 я теперь могу использовать очередь сообщений, как и ожидалось.

2

Другие решения

Других решений пока нет …