mq_unlink()

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

Прототип:

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

Аргументы:

name
Имя очереди сообщений, которую необходимо удалить.

Библиотека:

Описание:

Функция mq_unlink() удаляет очередь с заданным именем name.


Note: Нейтрино поддерживает две реализации очередей сообщений: классическую реализацию и альтернативную, использующую асинхронные сообщения. Для дополнительной информации см. документацию по mq и mqueue.

Если процесс имеет открытую на момент вызова mq_unlink() очередь, фактическое удаление очереди произойдёт только после её закрытия. Если между запросом на удаление и фактическим удалением очереди она продолжает существовать, все вызовы для открытия очереди с заданным именем потерпят неудачу (даже если флаг O_CREAT присутствует в oflag). После удаления очереди все находящиеся в ней элементы удаляются. Из-за того, что удаление очередей происходит не моментально, невозможно заблокировать какой-либо процесс в очереди сообщений при ее удалении.

Вызов функции unlink() с именем очереди, которое представляется как пространство имён сервера очереди сообщений (например /dev/mqueue/my_queue) аналогично вызову функции mq_unlink() с параметром name, содержащим последний элемент пути (например my_queue).

Возвращаемое значение:

-1
Возникла ошибка. Код ошибки записан в errno.
≠-1
Успешное завершение. Очередь успешно удалена.

Коды ошибок:

EACCES
Нет разрешения на удаление очереди с заданным именем.
ELOOP
Слишком много уровней символических ссылок или префиксов.
ENAMETOOLONG
Длина имени name превышает PATH_MAX.
ENOENT
Очередь с именем name не существует.
ENOSYS
Функция mq_unlink() не реализована для файловой системы, заданной в параметре name, или менеджер очереди сообщений ( mq или mqueue) не запущен.

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

POSIX 1003.1 Message Passing

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

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

mq_close(), mq_open(), unlink()

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




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