Также существуют очереди сообщений Poix. Как говорит man mq_overview
:
Очереди сообщений POSIX позволяют процессам обмениваться данными в форме сообщений. Этот API отличается от того, что предоставляется очередями сообщений System V (msgget(2), msgsnd(2), msgrcv(2) и т. д.), но предоставляет аналогичные функции.
Очереди сообщений создаются и открываются с помощью mq_open(3); эта функция возвращает дескриптор очереди сообщений (mqd_t), который используется для ссылки на открытую очередь сообщений в последующих вызовах. Каждая очередь сообщений идентифицируется именем вида /somename; то есть завершаемая нулем строка длиной до NAME_MAX (т. е. 255) символов, состоящая из начальной косой черты, за которой следует один или несколько символов, ни один из которых не является косой чертой. Два процесса могут работать с одной и той же очередью, передав одно и то же имя в mq_open(3).
Сообщения передаются в очередь и из очереди с помощью mq_send(3) и mq_receive(3). Когда процесс закончил использовать очередь, он закрывает ее с помощью mq_close(3), а когда очередь больше не нужна, ее можно удалить с помощью mq_unlink(3). Атрибуты очереди можно получить и (в некоторых случаях) изменить с помощью mq_getattr(3) и mq_setattr(3). Процесс может запросить асинхронное уведомление о поступлении сообщения в ранее пустую очередь с помощью mq_notify(3).
Дескриптор очереди сообщений является ссылкой на описание открытой очереди сообщений (см. open(2)). После fork(2) дочерний процесс наследует копии дескрипторов очереди сообщений своего родителя, и эти дескрипторы ссылаются на те же описания открытых очередей сообщений, что и соответствующие дескрипторы родительского объекта. Соответствующие дескрипторы в двух процессах совместно используют флаги (mq_flags), связанные с описанием открытой очереди сообщений.
Каждое сообщение имеет соответствующий приоритет, и сообщения всегда доставляются в процесс-получатель с наивысшим приоритетом первым. Приоритеты сообщений варьируются от 0 (низкий) до sysconf(_SC_MQ_PRIO_MAX) - 1 (высокий). В Linux sysconf(_SC_MQ_PRIO_MAX) возвращает 32768, но POSIX.1 требует только, чтобы реализация поддерживала как минимум приоритеты в диапазоне от 0 до 31; некоторые реализации предоставляют только этот диапазон.