Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       rename - изменить имя или расположение файла

КРАТКАЯ СВОДКА

       #include <unistd.h>

       int rename(const char *oldpath, const char *newpath);

ОПИСАНИЕ

       rename  переименовывает  файл,  перемещая  его  между  каталогами, если
       требуется.

       Все прочие жесткие ссылки на файл  (созданные  с  помощью  link(2))  не
       изменяются.

       Если  newpath  уже  существует,  то  он будет атомарно перезаписан (при
       определенных условиях - смотри ОШИБКИ  ниже),  так  что  нет  ни  одной
       точки,  когда  другой  процесс,  пытающийся  обратиться  к  newpath, не
       обнаружит его.

       Если newpath существует, но операция завершается неуспешно или  система
       аварийно  завершает работу, rename гарантируется, что newpath останется
       нетронутым.

       При перезаписи, однако,  вероятно  будет  окно,  в  котором  oldpath  и
       newpath ссылаются на один и тот же файл.

       Если  oldpath является символической ссылкой, то она переименовывается;
       если newpath является символической ссылкой, то будет перезаписан файл,
       на который она указывает.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       В случае успеха возвращается ноль.  При ошибке возвращается -1, а errno
       устанавливается должным образом.

ОШИБКИ

       EISDIR  newpath является существующим каталогом, но oldpath не является
               каталогом

       EXDEV   oldpath и newpath находятся на разных файловых системах.

       ENOTEMPTY
               newpath является непустым каталогом.

       EBUSY   newpath  существует  и  является  текущим рабочим каталогом или
               корневым каталогом какого-то процесса.

       EEXIST  Новое имя пути совпадает с началом старого имени.

       EINVAL  Попытка сделать каталог своим собственным подкаталогом.

       EMLINK  oldpath уже имеет максимальное количество ссылок на  него,  или
               это  был  каталог,  а  каталог,  содержащий  newpath, уже имеет
               максимальное количество ссылок.

       ENOTDIR Компонент, используемый как каталог в  oldpath  или  newpath  в
               действительности не является каталогом.

       EFAULT  oldpath  или  newpath указывают за пределы доступного адресного
               пространства.

       EACCES  Запись в каталог, содержащий oldpath или newpath  не  разрешена
               для  эффективного  uid'а  процесса,  или  один  из  каталогов в
               oldpath или newpath не позволяет производить поиск (выполнять),
               или   oldpath  был  каталогом  и  не  позволял  запись  в  него
               (необходимую, чтобы обновить ..).

       EPERM   Каталог, содержащий oldpath, имеет  sticky-bit,  а  эффективный
               uid процесса не равен ни uid'у файла, который нужно удалить, ни
               uid'у каталога, который его  содержит,  или  файловая  система,
               содержащая    pathname,    не    поддерживает    переименование
               запрошенного типа.

       ENAMETOOLONG
               oldpath или newpath слишком длинны.

       ENOENT  Одна из частей каталога в oldpath    newpath  не  существует
               или является "висячей" символической ссылкой.

       ENOMEM  Ядру не хватило памяти.

       EROFS   Файл  находится  на файловой системе, смонтированной только для
               чтения.

       ELOOP   oldpath или newpath содержат зацикленную символическую  ссылку,
               то есть при ее подстановке происходит ссылка на нее саму.

       ENOSPC  На  устройстве,  содержащем  файл, нет места для новой записи в
               каталоге.

СООТВЕТСТВУЕТ

       POSIX, 4.3BSD, ANSI C

ОШИБКИ

       На файловых системах NFS вы не можете исходить  из  предположения,  что
       если операция завершилась неудачно, то файл остался не переименованным.
       Если   сервер   совершает   операцию   rename,   а    затем    аварийно
       останавливается,  то  перепосланный  пакет  RPC  будет опять обработан,
       когда сервер восстановит работу,  и  это  вызовет  ошибку.   Приложение
       должно  справиться с этой ситуацией. См.  link(2) за описанием подобной
       проблемы.

СМОТРИ ТАКЖЕ

       link(2), unlink(2), symlink(2), mv(1), link(8).

ПЕРЕВОД

       Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999-2000