mq_send(3)mq_send(3)NAMEmq_send - Places a message in the message queue (P1003.1b)
SYNOPSIS
#include <mqueue.h>
int mq_send ( mqd_t mqdes, const char *msg_ptr, size_t msg_len,
unsigned int msg_prio);
LIBRARY
Realtime Library (librt.so, librt.a)
PARAMETERS
Specifies a message queue descriptor. Specifies a pointer to a buffer
containing the message to be sent. Indicates the number of bytes of
the message to be sent. Indicates the priority of the message being
sent.
DESCRIPTION
The mq_send function places a message in the message queue. This func‐
tion inserts the message in the queue at the position indicated by the
msg_prio argument. A message with a relatively large numeric value for
the msg_prio argument has a high priority, and it is therefore inserted
before messages with lower values for the msg_prio argument. This
function inserts messages with equal priority into the queue in first-
in/first-out order. Thus the function inserts a message with a given
priority after already-queued messages that have the same priority.
If the message queue is full, and the O_NONBLOCK option associated with
it is not set, the mq_send function blocks until sufficient space in
the message queue becomes available or until a signal interrupts the
mq_send function.
If two or more processes are waiting to send messages when space
becomes available in the queue, the highest-priority process that has
been waiting the longest sends the message first.
The mq_send function returns an error if the specified queue is full
and the O_NONBLOCK option is set for that queue.
RETURN VALUES
On successful completion, the mq_send function returns a value of 0
(zero).
Otherwise, no message is sent, -1 is returned, and errno is set to
indicate the error.
ERRORS
The mq_send function fails under the following conditions: The O_NON‐
BLOCK option is set in the message queue description associated with
mqdes, and the specified message queue is full. The mqdes argument is
not a valid message queue descriptor open for writing. An internal
virtual memory error occurred. A signal interrupted the call to
mq_send. The value of msg_prio is outside the valid range. The speci‐
fied message length, msg_len, exceeds the message size attribute of the
message queue. Note that a zero-length message is valid.
SEE ALSO
Functions: mq_receive(3), mq_setattr(3)
Guide to Realtime Programming
mq_send(3)