mq_send()
Send a message to a queue
Synopsis:
#include <mqueue.h>
int mq_send( mqd_t mqdes,
const char * msg_ptr,
size_t msg_len,
unsigned int msg_prio );
Arguments:
- mqdes
- The message-queue descriptor, returned by mq_open(), of the message queue that you want to send a message to.
- msg_ptr
- A pointer to the message that you want to send.
- msg_len
- The size of the message.
- msg_prio
- The priority of the message, in the range from 0 through (MQ_PRIO_MAX - 1).
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The mq_send() function puts a message of size msg_len and pointed to by msg_ptr into the queue indicated by mqdes. The new message has a priority of msg_prio.
The queue is maintained in priority order, and in FIFO order within the same priority.
If the number of elements on the specified queue is equal to its mq_maxmsg, and O_NONBLOCK wasn't set (in the oflag argument to mq_open()), the call to mq_send() blocks. It becomes unblocked when there's room on the queue to send the given message. If more than one mq_send() is blocked on a given queue, and space becomes available in that queue to send, then the mq_send() with the highest priority message is unblocked.
In the traditional (mqueue) implementation, calling write() with mqdes is analogous to calling mq_send() with a msg_prio of 0.
Returns:
-1 if an error occurred (errno is set). Any other value indicates success.
Errors:
- EAGAIN
- The O_NONBLOCK flag was set when opening the queue, and the specified queue is full.
- EBADF
- The mqdes argument doesn't represent a valid message queue descriptor, or mqdes wasn't opened for writing.
- EFAULT
- The msg_ptr argument isn't a valid pointer.
- EINTR
- The call was interrupted by a signal.
- EINVAL
- The value of msg_prio was greater than (MQ_PRIO_MAX - 1).
- EMSGSIZE
- The msg_len argument was greater than the msgsize associated with the specified queue.
Examples:
See the example for mq_open().
Classification:
Safety: | |
---|---|
Cancellation point | Yes |
Signal handler | No |
Thread | Yes |