Удалить ссылку на файл
#include <stdio.h>
int remove( const char *filename );
- filename
- Путь к файлу, который требуется удалить.
libc
Функция remove() удаляет ссылку на файл:
- Если filename именует символическую ссылку, remove() удаляет ссылку, но не влияет на файл или каталог, к которому ведет ссылка.
- Если filename не является символической ссылкой, remove() удаляет ссылку и уменьшает счетчик ссылок файла, на который она ссылается.
Если счетчик ссылок файла становится равным нулю, и ни один процесс не открыл файл, то пространство, которое занимает файл, освобождается, и никто больше не может получить доступ к файлу.
Если один или несколько процессов открывают файл при удалении последней ссылки, ссылка удаляется, но удаление файла откладывается до тех пор, пока все ссылки на него не будут закрыты.
Функция remove() также работает и с директориями; однако, rmdir() более эффективна.
- 0
- Успешное завершение.
- ≠0
- Возникла ошибка. Код ошибки записан в errno.
- EACCES
- Отказано в разрешении на поиск для компонента filename или в разрешении на запись для каталога, содержащего удаляемую ссылку.
- EBUSY
- Каталог с именем filename не может быть отвязан, потому что он используется системой или другим процессом, и целевая файловая система или менеджер ресурсов считает это ошибкой.
- ENAMETOOLONG
- Аргумент filename превышает длину
PATH_MAX
, или компонент пути длиннее, чем NAME_MAX
. - ENOENT
- Указанный файл не существует или filename - пустая строка.
- ENOSYS
- Функция remove() не реализована для файловой системы, указанной в filename.
- ENOTDIR
- Компонент filename не является каталогом.
- EPERM
- Файл с именем filename является каталогом, и либо вызывающий процесс не имеет соответствующих привилегий, либо целевая файловая система или менеджер ресурсов запрещают использовать remove() в каталогах.
- EROFS
- Запись каталога, которую нужно отвязать, находится в файловой системе, доступной только для чтения.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
if( remove( "vm.tmp" ) )
{
puts( "Error removing vm.tmp!" );
return (EXIT_FAILURE);
}
return (EXIT_SUCCESS);
}
ANSI, POSIX 1003.1
- Да
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Нет
- В потоке
- Да
errno, rmdir(), unlink()
Предыдущий раздел: Описание API системной библиотеки