Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       mq_send, mq_timedsend - отправляет сообщение в очередь сообщений

БИБЛИОТЕКА

       Библиотека реального времени (librt, -lrt)

ОБЗОР

       #include <mqueue.h>

       int mq_send(mqd_t mqdes, const char msg_ptr[.msg_len],
                     size_t msg_len, unsigned int msg_prio);

       #include <time.h>
       #include <mqueue.h>

       int mq_timedsend(mqd_t mqdes, const char msg_ptr[.msg_len],
                     size_t msg_len, unsigned int msg_prio,
                     const struct timespec *abs_timeout);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       mq_timedsend():
           _POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ

       Функция mq_send() добавляет сообщение, на которое указывает msg_ptr, в очередь сообщений, на которую
       ссылается дескриптор очереди сообщений mqdes. В аргументе msg_len задаётся длина сообщения, на которое
       указывает msg_ptr; эта длина должна быть меньше или равно атрибуту очереди mq_msgsize. Допускаются
       сообщения нулевой длины.

       Значение аргумента msg_prio представляет собой неотрицательное целое, которым определяется приоритет
       этого сообщения. Сообщения помещаются в очередь в порядке уменьшения приоритета, самые новые сообщения с
       одинаковым приоритетом размещаются после старых с тем же приоритетом. Описание диапазона приоритета
       сообщения смотрите в mq_overview(7).

       Если очередь сообщений заполнена (т. е., количество сообщений в очереди равно атрибуту очереди
       mq_maxmsg), то по умолчанию mq_send() блокируется до появления места для записи сообщения, или пока вызов
       не будет прерван обработчиком сигнала. Если в описании очереди сообщений включён флаг O_NONBLOCK, то
       вместо этого вызов сразу завершается с ошибкой EAGAIN.

       mq_timedsend()  behaves just like mq_send(), except that if the queue is full and the O_NONBLOCK flag is
       not enabled for the message queue description, then abs_timeout points to a structure which specifies how
       long the call will block.  This value is an absolute timeout in seconds and nanoseconds since the Epoch,
       1970-01-01 00:00:00 +0000 (UTC), specified in a timespec(3)  structure.

       Если очередь сообщений полна и вышло время ожидания на момент вызова, то mq_timedsend() сразу же
       завершается.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении mq_send() и mq_timedsend() возвращается ноль; при ошибке возвращается -1, а в
       errno помещается код ошибки.

ОШИБКИ

       EAGAIN Очередь  была  полна  и  в  описании  очереди  сообщений,  на которое ссылается mqdes, указан флаг
              O_NONBLOCK.

       EBADF  В mqdes указан некорректный или не открытый на запись дескриптор.

       EINTR  Вызов был прерван обработчиком сигнала; смотрите signal(7).

       EINVAL Вызов бы заблокировался и в abs_timeout указано некорректное значение, так как tv_sec меньше  нуля
              или tv_nsec меньше нуля или более 1000 миллионов.

       EMSGSIZE
              msg_len больше, чем свойство очереди сообщений mq_msgsize.

       ETIMEDOUT
              Истёк период ожидания в вызове, раньше появления возможности передачи сообщения.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ mq_send(), mq_timedsend()                                           │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

ВЕРСИИ

       В  Linux mq_timedsend() является системным вызовом, а mq_send() — библиотечной функцией, реализованной на
       основе этого системного вызова:

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001.

СМОТРИТЕ ТАКЖЕ

       mq_close(3),  mq_getattr(3),  mq_notify(3),   mq_open(3),   mq_receive(3),   mq_unlink(3),   timespec(3),
       mq_overview(7), time(7)

ПЕРЕВОД

       Русский   перевод   этой   страницы   руководства   разработал(и)   aereiae  <aereiae@gmail.com>,  Alexey
       <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>,
       Dmitry Bolkhovskikh <d20052005@yandex.ru>, ITriskTI <ITriskTI@gmail.com>,  Max  Is  <ismax799@gmail.com>,
       Yuri   Kozlov   <yuray@komyakino.ru>,   Иван   Павлов  <pavia00@gmail.com>,  Малянов  Евгений  Викторович
       <maljanow@outlook.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                       mq_send(3)