Close a message queue


#include <mqueue.h>

int mq_close( mqd_t mqdes );


The message-queue descriptor, returned by mq_open(), of the message queue that you want to close.



The mq_close() function removes the association between mqdes and a message queue. If the current process attaches a notify to this queue for notification, the attachment is eliminated. If this queue is unlinked before the call to mq_close(), and this process is the last process to call mq_close() on the queue, then the queue is destroyed, along with its contents.

Note: The message queue manager needs to be running. Neutrino supports two implementations of message queues: a traditional implementation, and an alternate one that uses the mq server and a queue in kernel space. For more information, see the entries for mq and mqueue in the Utilities Reference, as well as the POSIX Message Queues: Two Implementations technote.

In the traditional (mqueue) implementation, calling close() with mqdes has the same effect as calling mq_close().


-1 if an error occurred (errno is set). Any other value indicates success.


Invalid queue mqdes.


POSIX 1003.1 MSG

Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

See also:

mq_open(), mq_unlink()

mq, mqueue in the Utilities Reference

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

POSIX Message Queues: Two Implementations technote.