Skip to content

mq_open

mq_open() creates or opens a POSIX message queue.

Prototype

#include <mqueue.h>

mqd_t mq_open(const char *name, int oflag, ...);

Typical Usage

struct mq_attr attr = {
    .mq_flags = 0,
    .mq_maxmsg = 8,
    .mq_msgsize = 128,
    .mq_curmsgs = 0,
};

mqd_t mq = mq_open("/demo_mq", O_CREAT | O_RDWR, 0600, &attr);
if (mq == (mqd_t)-1) {
    perror("mq_open");
    return -1;
}
  • mq_send()
  • mq_receive()
  • mq_getattr()
  • mq_setattr()
  • mq_close()
  • mq_unlink()

Common Pitfalls

Warning

The receive buffer must be at least mq_msgsize bytes.

Note

On Linux, POSIX message queue descriptors can be used with epoll().