remove - удаляет имя файла и, возможно, сам файл
НАЗВАНИЕremove - удаляет имя файла и, возможно, сам файл
СИНТАКСИС
#include
int remove(const char *pathname);
ОПИСАНИЕ
remove удаляет имя из существующей файловой системы. Она
вызывает unlink для файла и rmdir для каталога, на который
указывает. Если удаленное имя является последней
оставшейся ссылкой на файл и нет процессов, открывших его,
то этот файл удаляется и освобожденное пространство
становится доступным для использования. Если удаленное имя
является последней оставшейся ссылкой на файл и есть хоть
один процесс, открывший его, то этот файл будет
существовать до тех пор, пока не освободится последний
описатель, на него указывающий. Если имя указывает на
символьную ссылку, она будет удалена. Если имя указывает
на сокет, буфер fifo или файл устройства, то имя удаляется
из системы, но процессы, открывшие этот описатель ранее,
могут им пользоваться.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае удачного завершения возвращается 0. В случае
ошибки -1, а также errno устанавливается соответственно
коду ошибки.
КОДЫ ОШИБОК
EFAULT (pathname указывает на недоступное адресное
пространство);
EACCES (запись в каталог, содержащий pathname, запрещен
пользователю этого процесса, а также в одном из
каталогов пути pathname запрещены поиск или
выполнение);
EPERM каталог, содержащий pathname, имеет включенный в
него бит (S_ISVTX));
ENAMETOOLONG
(pathname слишком длинный);
ENOENT (каталог pathname не существует или указывает на
"разорванную" символьную ссылку);
ENOTDIR
(компонент пути pathname, использованный как
каталог, на самом деле таковым не является);
ENOMEM (необходимое количество памяти недоступно);
EROFS (pathname указывает на файл, который принадлежит
файловой системе, доступной только для чтения).
СООТВЕТСТВИЕ СТАНДАРТАМ
ANSI C, SVID, AT&T, POSIX, X/OPEN, BSD 4.3
НАЙДЕННЫЕ ОШИБКИ
Недостатки протокола NFS могут привести к удалению файлов,
в то время как их еще используют какие-либо процессы.
ЗАМЕЧАНИЕ
В libc4 и libc5 remove полностью аналогичен unlink (и не
удаляет каталогов).