dwww Home | Manual pages | Find package

mq_send(3)                  Library Functions Manual                 mq_send(3)

NAME
       mq_send, mq_timedsend - send a message to a message queue

LIBRARY
       Real-time library (librt, -lrt)

SYNOPSIS
       #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);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       mq_timedsend():
           _POSIX_C_SOURCE >= 200112L

DESCRIPTION
       mq_send() adds the message pointed to by msg_ptr to the message queue
       referred to by the message queue descriptor mqdes.  The msg_len argument
       specifies the length of the message pointed to by msg_ptr; this length
       must be less than or equal to the queue's mq_msgsize attribute.  Zero-
       length messages are allowed.

       The msg_prio argument is a nonnegative integer that specifies the prior-
       ity of this message.  Messages are placed on the queue in decreasing or-
       der of priority, with newer messages of the same priority being placed
       after older messages with the same priority.  See mq_overview(7) for de-
       tails on the range for the message priority.

       If the message queue is already full (i.e., the number of messages on
       the queue equals the queue's mq_maxmsg attribute), then, by default,
       mq_send() blocks until sufficient space becomes available to allow the
       message to be queued, or until the call is interrupted by a signal han-
       dler.  If the O_NONBLOCK flag is enabled for the message queue descrip-
       tion, then the call instead fails immediately with the error 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 de-
       scription, 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), speci-
       fied in a timespec(3) structure.

       If the message queue is full, and the timeout has already expired by the
       time of the call, mq_timedsend() returns immediately.

RETURN VALUE
       On success, mq_send() and mq_timedsend() return zero; on error, -1 is
       returned, with errno set to indicate the error.

ERRORS
       EAGAIN The  queue was full, and the O_NONBLOCK flag was set for the mes-
              sage queue description referred to by mqdes.

       EBADF  The descriptor specified in mqdes was invalid or not  opened  for
              writing.

       EINTR  The call was interrupted by a signal handler; see signal(7).

       EINVAL The  call would have blocked, and abs_timeout was invalid, either
              because tv_sec was less than zero, or because  tv_nsec  was  less
              than zero or greater than 1000 million.

       EMSGSIZE
              msg_len  was greater than the mq_msgsize attribute of the message
              queue.

       ETIMEDOUT
              The call timed out before a message could be transferred.

ATTRIBUTES
       For an explanation of the terms used in this section, see attributes(7).
       ┌────────────────────────────────────────────┬───────────────┬─────────┐
       │ Interface                                  Attribute     Value   │
       ├────────────────────────────────────────────┼───────────────┼─────────┤
       │ mq_send(), mq_timedsend()                  │ Thread safety │ MT-Safe │
       └────────────────────────────────────────────┴───────────────┴─────────┘

VERSIONS
       On Linux, mq_timedsend() is a system call, and mq_send()  is  a  library
       function layered on top of that system call.

STANDARDS
       POSIX.1-2008.

HISTORY
       POSIX.1-2001.

SEE ALSO
       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)

Linux man-pages 6.9.1              2024-05-02                        mq_send(3)

Generated by dwww version 1.16 on Tue Dec 16 03:58:12 CET 2025.