Атрибуты очереди сообщений
#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, это поле было сохранено как расширение ЗОСРВ «Нейтрино». Ненулевое значение в этом поле означает, что очередь пуста.  
 
 
  |  Альтернативная реализация (mq) очередей сообщений не поддерживает не-POSIX поля mq_sendwait и mq_recvwait.  | 
 
POSIX 1003.1 Message Passing
 mq_getattr(),  mq_open(),  mq_setattr()
 
Предыдущий раздел:  Описание API системной библиотеки