Книга: Основы программирования в Linux
msgget
msgget
Очередь сообщений создается и предоставляет к себе доступ с помощью функции msgget
:
int msgget(key_t key, int msgflg);
Программа должна предоставить значение параметра key
, которое, как и в других средствах IPC, задает имя конкретной очереди сообщений. С помощью специального значения IPC_PRIVATE
создается скрытая или частная очередь, которая теоретически доступна только текущему процессу. Как и в случае семафоров и совместно используемой памяти, в некоторых системах Linux такая очередь может не быть частной. Поскольку от скрытой или частной очереди очень мало пользы, это не слишком важная проблема. Как и раньше, второй параметр msgflg
состоит из девяти флагов прав доступа. Для создания новой очереди сообщений специальный бит со значением IPC_CREAT
должен быть объединен с правами доступа поразрядной операцией OR
. Не считается ошибкой установка флага IPC_CREAT
и задание ключа уже существующей очереди сообщений. Если очередь уже есть, флаг IPC_CREAT
безмолвно игнорируется.
Функция msgget
вернет положительное число, идентификатор очереди; в случае успешного завершения и -1 в случае сбоя.