mq_send() / mq_receive()¶
Purpose¶
Sends and receives messages through a POSIX message queue.
Header¶
Prototype¶
int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned int msg_prio);
ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio);
Parameters¶
mqdes: message queue descriptor.msg_ptr: message buffer.msg_len: message length. For receive, buffer size must be at leastmq_msgsize.msg_prio: message priority.
Return Value¶
mq_send(): returns0on success,-1on failure.mq_receive(): returns received byte count on success,-1on failure.
Minimal Example¶
Common Pitfalls¶
- The receive buffer must be large enough for the queue message size.
- Non-blocking queues return
EAGAINwhen empty or full. - POSIX mqueue descriptors can be monitored by
epoll()on Linux.