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