mq_setattr()

Установить атрибуты очереди

Прототип:

#include <mqueue.h>
int mq_setattr( mqd_t mqdes,
const struct mq_attr *mqstat,
struct mq_attr *omqstat );

Аргументы:

mqdes
Дескриптор очереди сообщений, возвращенный mq_open(), атрибуты которой необходимо установить.
mqstat
Указатель на структуру struct mq_attr, задающую атрибуты, которые необходимо использовать для очереди сообщений. Для получения дополнительной информации об этой структуре см. mq_getattr().
omqstat
NULL или указатель на структуру struct mq_attr, где функция может хранить старые атрибуты очереди сообщений.

Библиотека:

Описание:

Функция mq_setattr() устанавливает поле mq_flags для заданной очереди (передаётся как поле mq_flags в mqstat). Если параметр omqstat не равен NULL, то старая структура, содержащая атрибуты, сохраняется в месте, на которое этот параметр указывает.


Note: Нейтрино поддерживает две реализации очередей сообщений: классическую реализацию и альтернативную, использующую асинхронные сообщения. Для дополнительной информации см. документацию по mq и mqueue.

Эта функция игнорирует поля mq_maxmsg, mq_msgsize и mq_curmsgs в mqstat. Поле mq_flags представляет собой побитовое ИЛИ для нуля или более следующих констант:

O_NONBLOCK
Ни функция mq_receive(), ни функция mq_send() никогда не будут блокироваться для этой очереди. Если очередь находится в таком состоянии, что заданная операция не может быть выполнена без блокировки, то возвращается ошибка, а errno устанавливается в EAGAIN.


Note: Настройки, которые задаются для mq_flags, применяются только к заданному описанию очереди сообщений (т.е. локально), а не к самой очереди.

Возвращаемое значение:

-1
Возникла ошибка. Код ошибки записан в errno.
≠-1
Успешное завершение.

Коды ошибок:

EBADF
Недопустимая очередь сообщений, заданная параметром mqdes.

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

POSIX 1003.1 Message Passing

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

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

struct mq_attr, mq_getattr(), mq_open(), mq_receive(), mq_send()

mq, mqueue в Справочнике по Утилитам




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