Создание непостоянных очередей сообщений в Linux - PullRequest
0 голосов
/ 07 июля 2011

Это может быть совершенно новый вопрос об очередях сообщений, но у нас есть некоторые проблемы с их постоянством во всей системе Linux.Мы запускаем Fedora 14 и используем очереди сообщений для передачи данных в потоки.

Проблема в том, что мы создаем очередь сообщений:

q = mq_open (strName, O_RDWR | O_CREAT | O_NONBLOCK, 0666, &sQAttr)

где:

strName = "/INFO_UPD_Q" or "/POLL_Q" ...
sQAttr.mq_flags   = 0;
sQAttr.mq_maxmsg  = iMaxNumMessages; /* 1 - 10 */
sQAttr.mq_msgsize = iSzOfMessages;
sQAttr.mq_curmsgs = 0;

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

В данный момент мы решаем проблему, меняя имя очередей и затем перезагружая систему так часто.

Какмы получаем очереди, чтобы прекратить делать это?

Спасибо.

1 Ответ

1 голос
/ 08 июля 2011

Из оболочки вы можете увидеть все существующие очереди, используя:

# ipcs -q

И вы можете удалить устаревшие очереди:

# ipcrm -q MSQID

MSQID доступен из выходных данных первогокоманда.

...