Remove a queue
#include <mqueue.h> int mq_unlink( const char* name );
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Use the -l mq option to qcc to link against this library.
The mq_unlink() function removes the queue with the given name.
|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.|
If some process has the queue open when the call to mq_unlink() is made, then the actual deletion of the queue is postponed until it has been closed. If a queue exists in the netherworld between unlinking and the actual removal of the queue, then all calls to open a queue with the given name fail (even if O_CREAT is present in oflag). Once the queue is deleted, all elements currently on it are freed. Due to the lazy deletion of queues, it's impossible for any process to be blocked on the message queue when it's deleted.
Calling unlink() with a name that resolves to the message queue server's namespace (e.g., /dev/mqueue/my_queue) is analogous to calling mq_unlink() with name set to the last elements of the pathname (e.g., my_queue).
-1 if the queue wasn't successfully unlinked (errno is set). Any other value indicates that the queue was successfully unlinked.
POSIX 1003.1 MSG
mq_close(), mq_open(), 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.