struct mq_attr

Атрибуты очереди сообщений

Прототип:

#include <mqueue.h>
struct mq_attr {
long mq_maxmsg; /* максимальное количество сообщений, которые могут быть сохранены */
long mq_msgsize; /* максимальная длина сообщения */
long mq_flags;
long mq_curmsgs; /* текущее количество сохранённых сообщений */
long mq_sendwait; /* количество процессов, ожидающих отправки сообщения */
long mq_recvwait; /* количество процессов, ожидающих получения сообщения */
};

Описание:

Структура mq_attr содержит информацию об атрибутах очереди сообщений, полученных с помощью функции mq_getattr(). Структура содержит следующие поля:

mq_flags
Параметры, установленные для описания открытой очереди сообщений (т.е. эти параметры относятся к данному дескриптору mqdes, а не к очереди в целом). Это поле могло быть изменено вызовом mq_setattr() с тех пор, как очередь была открыта.
O_NONBLOCK
Ни один из вызовов mq_receive() или mq_send() никогда не будет блокироваться для этой очереди. Если очередь находится в таком состоянии, что данная операция не может быть выполнена без блокировки, то возвращается ошибка, а errno устанавливается в EAGAIN.
mq_maxmsg
Максимальное количество сообщений, которое может храниться в заданной очереди. Это значение было установлено при создании очереди.
mq_msgsize
Максимальный размер каждого сообщения в заданной очереди сообщений. Это значение также было установлено при создании очереди.
mq_curmsgs
Количество сообщений, находящихся в данный момент в заданной очереди.
mq_sendwait
Количество потоков, в настоящее время ожидающих отправки сообщения. Это поле было исключено из стандарта POSIX после версии Draft 9, но сохранено как расширение ЗОСРВ «Нейтрино». Ненулевое значение в этом поле означает, что очередь заполнена.
mq_recvwait
Количество потоков, в настоящее время ожидающих получения сообщения. Как и mq_sendwait, это поле было сохранено как расширение ЗОСРВ «Нейтрино». Ненулевое значение в этом поле означает, что очередь пуста.


Note: Альтернативная реализация (mq) очередей сообщений не поддерживает не-POSIX поля mq_sendwait и mq_recvwait.

Классификация:

POSIX 1003.1 Message Passing

Тематические ссылки:

mq_getattr(), mq_open(), mq_setattr()




Предыдущий раздел: Описание API системной библиотеки