This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs. |
Receive a message from a queue
#include <mqueue.h> ssize_t mq_receive( mqd_t mqdes, char* msg_ptr, size_t msg_len, unsigned int* msg_prio );
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Use the -l mq option to qcc to link against this library.
The mq_receive() function is used to receive the oldest of the highest priority messages in the queue specified by mqdes. The priority of the message received is put in the location pointed to by msg_prio, the data itself in the location pointed to by msg_ptr, and the size received is be returned.
Neutrino supports two implementations of message queues: a traditional implementation, and an alternate one that uses asynchronous messages. For more information, see the entry for mq and mqueue in the Utilities Reference. |
If you call mq_receive() with a msg_len of anything other than the mq_msgsize of the specified queue, then mq_receive() returns an error, and errno is set to EINVAL.
If there are no messages on the queue specified, and O_NONBLOCK wasn't set in oflag during mq_open(), then the mq_receive() call blocks. If multiple mq_receive() calls are blocked on a single queue, then they're unblocked in FIFO order as messages arrive.
In the traditional (mqueue) implementation, calling read() with mqdes is analogous to calling mq_receive() with a NULL msg_prio.
The size of the message removed from the queue. If the call fails, -1 is returned as the size, no message is removed from the queue, and errno is set.
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |
mq_close(), mq_open(), mq_send(), mq_timedreceive(), read()
mq, mqueue in the Utilities Reference