Alternate message queue manager (QNX Neutrino)

Note: You must be root to start this manager.


mq [options] &

Runs on:



Don't daemonize.
-m num_msgs
Set the default for the maximum number of messages, for use if the mq_attr argument to mq_open() is NULL. The default is 64 messages.
-N path
Set the pathname of the directory for message queues. The default is /dev/mq.
-s size
Set the default message size, for use if the mq_attr argument to mq_open() is NULL. The default is 256 bytes.


The mq manager is an alternate implementation of POSIX 1003.1b message queues. When you create a queue, it appears in the pathname space under /dev/mq.

  • You can have only one of mq and the traditional message queue manager (mqueue) running on your system at any time.
  • You can change mq's directory to union over the directory exported by the mqueue server by using the mq -N/dev/mqueue option, but we don't recommend this, because it may cause some user-namespace confusion.

This implementation uses a queue within the kernel to buffer the messages and eliminates the context-switching overhead of using an external server (i.e. mqueue) in each message-queue operation, thus greatly improving the performance of POSIX message queues.

In order to use the mq implementation, you must link your application(s) against the libmq library. In a manual build, specify the -l mq option; in automatic/recursive builds, use this setting in your file:

LIBS += mq

For more information, see the POSIX Message Queues: Two Implementations technote.

See also:

mqueue, procnto*

mq_close(), mq_getattr(), mq_notify(), mq_open(), mq_receive(), mq_send(), mq_setattr(), mq_unlink() in the QNX Neutrino C Library Reference

POSIX message queues in the “Interprocess Communication (IPC)” chapter of System Architecture

Controlling How Neutrino Starts in the QNX Neutrino User's Guide

POSIX Message Queues: Two Implementations technote