LINUX.ORG.RU

Проверить статус очереди сообщений в shared memory

 , ,


0

2

Использую очереди в shared memory для межроцессного взаимодействия. Все работает отлично, пока не возникает ситуация переполнения очереди.

В связи с этим возник вопрос. В ситуации, когда msgsnd не отрабатывает, как определить что очередь переполнена, а не возникла какая-то другая проблема с нею? Я так понимаю, нужно использовать msgctl с командой IPC_STAT, но я не нашел в инете ни одного примера ее использования на perl. :(

Подскажите, пожалуйста, как определить ситуацию переполнения очереди сообщений?

★★★

Последнее исправление: UncleAndy (всего исправлений: 1)

Выставить IPC_NOWAIT и смотреть на errno. В случае perl это $! Если EINVAL, значит очередь переполнена

Chumka ★★★
()
Ответ на: комментарий от Chumka

Спасибо! Именно это и помогло. Единственное, что $! - это хэшь с ключами, равными типу ошибки. В моем случае для детектирования ситуации переполнения достаточно было проверять $!{EAGAIN}.

UncleAndy ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.