mq_unlink()

Удалить очередь

Прототип:

#include <mqueue.h>
int mq_unlink( const char *name );

Аргументы:

name
The name of the message queue that you want to unlink.

Библиотека:

Описание:

The mq_unlink() function removes the queue with the given name.


Note: Neutrino supports two implementations of message queues: a traditional implementation, and an alternate one that uses asynchronous messages. For more information, see the entries for mq and mqueue.

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
Возникла ошибка. Код ошибки записан в errno.
≠-1
Успешное завершение. Очередь успешно удалена.

Коды ошибок:

EACCES
You don't have permission to unlink the specified queue.
ELOOP
Too many levels of symbolic links or prefixes.
ENAMETOOLONG
The length of name exceeds PATH_MAX.
ENOENT
The queue name doesn't exist.
ENOSYS
The mq_unlink() function isn't implemented for the filesystem specified in name, or the message queue manager ( mq or mqueue) isn't running.

Классификация:

POSIX 1003.1 MSG

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

mq_close(), mq_open(), unlink()

mq, mqueue в Справочнике по Утилитам




Предыдущий раздел: Описание API системной библиотеки