Manage message queues (QNX Neutrino)

Note: You must be root to start this manager.


mq [-d] [-m num_msgs] [-N path] [-s size] [-U string] &

Runs on:

QNX Neutrino


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.
-U user_name
-U uid[:gid[,sup_gid]*]]
(QNX Neutrino 6.6 or later) Once running, run as the specified user, so that the program doesn't need to run as root:
  • In the first form, the service sets itself to be the named user and uses that user's groups. This form depends on the /etc/passwd and /etc/group files.
  • In the second form, the service sets its user ID, and optionally its group ID and supplementary groups, to the values provided.


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

  • The /dev/mq directory doesn't appear until you actually create a queue.
  • You can change this 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.
  • Note that you can have only one of mq and mqueue running on your system at any time.

This implementation uses a queue within the kernel to buffer the messages and eliminates the context-switching overheads 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 Managing POSIX Message Queues technote.