Удаление каталога

#include <unistd.h>

#include <sys/stat.h>

#include <sys/types.h>

int mkdir(const char *path, mode_t mode);

int rmdir(const char *path);

Данный системный вызов – удаление каталога, имя которого определяется параметром. При этом необходимо помнить, что задается только условный каталог (в нем не должно быть никаких файлов, только. и..).

В случае успеха rmdir() удаляет каталог path из файловой системы и возвращает значение 0. Каталог, указанный при помощи параметра path, должен быть пустым, за исключением каталогов точка и точка-точка. В случае ошибки возвращает -1 и присваивает переменной errno одно из следующих значений:

EACCESS – запрещен доступ на запись в родительский каталог каталога path или одна или несколько составляющих path недоступны для поиска.

EBUSY – каталог path в данный момент используется системой и удалить его невозможно. В Linux это может произойти только в том случае, если path является точкой монтирования или корневым каталогом (корневые каталоги не обязаны быть точками монтирования).

ЕFAULT – параметр path содержит недопустимый указатель.

EINVAL – последним компонентом пути path является каталог точка.

ELOOP – при разрешении пути path ядру встретилось слишком много символических ссылок.

ENAMETOOLONG – слишком длинное значение path.

ENOENT – компонент пути path не существует или представляет собой символическую ссылку, указывающую на несуществующий объект.

ENOMEM – недостаточно памяти ядра для выполнения данного запроса.

ENOTDIR – один или несколько компонентов пути path не являются каталогами.

ENOTEMPTY – каталог path содержит другие записи, кроме специальных каталогов точка и точка-точка.

EPERM – для каталога, являющегося предком каталога path, установлен бит закрепления в памяти (sticky bit, SISVTX), но действительный идентификатор пользователя процесса не совпадает ни с идентификатором пользователя указанного родителя, ни с идентификатором самого каталога path, а также процесс не обладает характеристикой CAPFOWNER. Также возможно, что файловая система, которой принадлежит path, не поддерживает удаление каталогов.

EROFS – файловая система, которой принадлежит path, подмонтирована в режиме только для чтения.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: