rmdir()

Удалить пустую директорию

Прототип:

#include <sys/types.h>
#include <unistd.h>
int rmdir( const char *path );

Аргументы:

path
Путь к директории, которую необходимо удалить. Путь может быть относительным от текущей рабочей директории или абсолютным путем.

Библиотека:

libc

Описание:

Функция rmdir() удаляет указанную директорию. В директории не должно быть файлов или каталогов.


Note: Если директория является текущей рабочей директорией любого процесса, rmdir() возвращает -1 и устанавливает для errno значение EINVAL. Если директория является корневым каталогом, действие этой функции зависит от файловой системы.

Пространство, занимаемое директорией, освобождается, что делает ее недоступным, если ее счетчик ссылок становится равным нулю и ни один процесс не держит директорию открытой с ( opendir()). Если у процесса есть открытая директория при удалении последней ссылки, записи . и .. удаляются и никакие новые записи не могут более появиться в данной директории. В этом случае каталог будет удален, когда все ссылки на него будут закрыты с помощью ( closedir()).

При успешном завершении, rmdir() отмечает st_ctime и st_mtime для обновления в родительском каталоге.

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

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Отказано в разрешении на поиск для компонента path или в разрешении на запись для родительского каталога удаляемого каталога.
EBUSY
Директория с именем path не может быть удалена, поскольку она используется другим процессом, и реализация считает это ошибкой.
EEXIST
Аргумент path именует каталог, который не пуст.
ELOOP
Слишком много уровней символических ссылок.
ENAMETOOLONG
Длина аргумента path превышает PATH_MAX, либо длина одного из компонентов пути превышает NAME_MAX.
ENOENT
Заданный path не существует, либо path является пустой строкой.
ENOSYS
Функция rmdir() не реализована для файловой системы, указанной в path.
ENOTDIR
Компонент path не является директорией.
ENOTEMPTY
Аргумент path указывает на каталог, который не пуст.
EROFS
Удаляемая запись каталога находится в файловой системе, доступной только для чтения.

Примеры:

Удаление директории /home/terry:

#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
int main( void )
{
(void)rmdir( "/home/terry" );
return (EXIT_SUCCESS);
}

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

POSIX 1003.1

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

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

chdir(), chmod(), errno, fchdir(), getcwd(), mkdir(), stat()




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