Provided by: manpages-ru-dev_4.26.0-1_all 

НАИМЕНОВАНИЕ
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)