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