Я реализую межпроцессное взаимодействие с использованием 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
Исключение вызвано проблемой в библиотеке Boost Interpocessing, как описано в этот билет. Ошибка была вновь открыта, и мне не совсем понятно, как был изменен код Boost и как можно применить обходной путь для Boost 1.45.
Однако после обновления до Boost 1.51 я теперь могу использовать очередь сообщений, как и ожидалось.
Других решений пока нет …