Как проверить, существует ли расширенная очередь сообщений - PullRequest
0 голосов
/ 13 июня 2018

Я использую boost message_queue и создаю очередь в одной программе на c ++ и использую ее в другой программе.

Моя проблема в том, что иногда первая программа еще не запускается, а втораяБег.

Поэтому, когда я запускаю первую программу, я хочу знать, существует ли очередь.Я не хочу использовать message_queue :: remove (), потому что я не хочу терять некоторые данные.

Вопрос в том, как я могу узнать, существует ли message_queue "bla_bla_queue" или нет?

message_queue q(open_only,"q");

1 Ответ

0 голосов
/ 13 июня 2018

Согласно doc :

Открывает ранее созданную общую очередь сообщений процесса с именем «имя».Если очередь ранее не создавалась или свободных ресурсов нет, выдается ошибка.

Таким образом, вы должны быть в состоянии перехватить исключение, если очередь сообщений не существует.

A simple test_program показала мне, что исключение interprocess_exception выбрасывается и код ошибки 7, что указывает на not_found_error.

...