unlink - удаляет имя и файл, на который оно ссылается
НАЗВАНИЕunlink - удаляет имя и файл, на который оно ссылается
СИНТАКСИС
#include
int unlink(const char *pathname);
ОПИСАНИЕ
unlink удаляет имя файла из файловой системы. Если это
имя было последней ссылкой на файл и нет ни одного
процесса, которые бы открыли этот файл, то файл удаляется,
а пространство, которое он занимал, освобождается для
повторного использования. Если имя было последней ссылкой
на файл, но есть процессы, которые держат файл открытым,
файл будет существовать до тех пор, пока не будет закрыт
последний файловый описатель, ссылающийся на этот файл.
Если имя ссылается на символьную ссылку, она удаляется.
Если имя ссылается на сокет, канал FIFO или устройство, то
имя удаляется, но процессы, открывшие соответствующий
объект, могут продолжать его использование.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении функции возвращается ноль. При
ошибке возвращается -1, а переменной errno присваивается
номер ошибки.
КОДЫ ОШИБОК
EPERM (только Linux)
Файловая система не позволяет выполнять операцию
unlink.
EPERM Система не позволяет выполнять операцию unlink для
каталогов, или эта операция требует привилегий,
которых данный процесс не имеет. (Это стандартное
сообщение об ошибке в POSIX.)
EISDIR pathname указывает на каталог. (Это значение, не
соответствующее POSIX, возвращается Linux с версии
2.1.132.)
EBUSY (не в Linux)
Файл pathname не может выть развязан, так-как он
используется системой или другим процессом и его
развязка считается ошибкой.
EFAULT pathname указывает на каталог за пределами
доступного адресного пространства.
EACCES Доступ на запись информации в каталог, содержащий
pathname, не разрешен текущему идентификатору
эффективного пользователя, или же один из
каталогов в pathname не разрешает поиск
(выполнение).
EPERM В права доступа к каталогу, содержащему pathname,
включен бит принадлежности (S_ISVTX), а
идентификатор эффективного пользователя не
указывает ни на владельца удаляемого файла, ни на
владельца каталога, который его содержит, или же
pathname является каталогом.
ENAMETOOLONG
Имя pathname является слишком длинным.
ENOENT Одной из частей пути pathname не существует, или
она является "висячей" символьной ссылкой.
ENOTDIR Компонент пути, использованный как каталог в path-
name, в действительности каталогом не является.
ENOMEM В ядре недостаточно памяти.
EROFS Файл находится в файловой системе, предназначенной
только для чтения.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 описывает
дополнительные коды ошибок: EINTR, EMULTIHOP, ETXTBSY,
ENOLINK.
НАЙДЕННЫЕ ОШИБКИ
Погрешности в протоколе, по которому работает NFS, могут
привести к неожиданному исчезновению еще используемых
файлов.