Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 57 стр.

UptoLike

Составители: 

57
mq_open(), закрытьс помощью mq_close() и уничтожить сообщенияс
помощью mq_unlink(). Для того чтобы поместить данные в очередь сообще-
ний и извлечь данные из очереди, используются вызовы mq_send() и
mq_receive(). При точном соответствии со стандартом POSIX в имени оче-
реди может присутствовать только один слеш (/). Однако в QNX стандарт
имеет расширение и поддерживает имена, содержащие много слешей. Это
позволяет, например, некоторой компании иметь все очереди сообщений, в
которых слешами выделено имя компании, что дает возможность исклю-
чить конфликты при совместном использовании данного механизма обмена
несколькими компаниями в рамках одной сети. В QNX Neutrino все очереди
сообщений с ведущим символом (/) будут отображаться как имена файлов в
директории /dev/mqueue. Эти имена можно отобразить на дисплее с помо-
щью команды интерпретатора ls –Rl /dev/mqueue. Очереди сообщений с
другими именами локализуются в текущем директории процесса, создаю-
щего очередь. Очередь сообщений может быть открыта и на другом узле, в
этом случае спецификация имени должна включать предваряющий пре-
фикс /net/node/, где node – имя узла. Для управления очередью использу-
ются вызовы, представленные в табл. 3.12.
Таблица 3.12
Функция Описание
mq_open() Открыть очередь сообщений
mq_close() Закрыть очередь сообщений
mq_unlink() Удалить очередь сообщений
mq_send() Добавить сообщение к очереди
mq_receive() Получить сообщение из очереди
mq_notify() Уведомить вызывающий процесс, что сообщение находится в очереди
mq_setattr() Установить атрибуты очереди сообщений
mq_getattr() Получить атрибуты очереди сообщений
mq_timedreceive() Получить наиболее старое сообщение с наивысшим приоритетом
mq_timedsend() Добавить в очередь сообщение с заданным временем доставки
Рассмотрим синтаксис основных вызовов. Функция mq_open() открыва-
ет очередь сообщений по имени и возвращает дескриптор очереди, подоб-
ный файловому дескриптору. При неудаче возвращается значение –1. Все
последующие операции с очередью используют только этот дескриптор.
mqd_t mq_open( const char * name, // имя очереди
int oflag, // флаги
int mode, // режим доступа (опциональный аргумент)
int mq_attr,) // атрибуты (опциональный аргумент)
Аргументы: