Provided by: manpages-es_1.55-10_all bug

NOMBRE

       rename - cambia el nombre y/o posición de un fichero

SINOPSIS

       #include <stdio.h>

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

DESCRIPCIÓN

       rename renombre un fichero, moviéndolo entre directorios si así se requiere.

       Cualquier  otro  enlace  físico  al  fichero  (como  los  creados usando link(2)) no se ve
       afectado.

       Si newpath ya existe será automáticamente reemplazado (sujeto a unas pocas  condiciones  -
       ver  ERRORES  más  adelante)  de  tal  manera  que no haya posibilidad de que otro proceso
       intente acceder a newpath y no lo encuentre.

       Si newpath existe pero la operación falla por alguna razón,  rename  garantiza  dejar  una
       instacia de newpath en el lugar.

       Sin  embargo,  durante  una  sobreescritura  habrá probablemente un intervalo en que tanto
       oldpath y newpath se refieran al fichero que se está renombrando.

       Si oldpath se refiere a un enlace simbólico, el enlace  será  renombrado;  si  newpath  se
       refiere a un enlace simbólico, el enlace será sobreescrito.

VALOR DEVUELTO

       En  caso  de  éxito  se devuelve 0. En caso de error se devuelve -1 y se asigna a errno un
       valor apropiado.

ERRORES

       EISDIR newpath es un directorio que ya existe pero oldpath no es un directorio.

       EXDEV  oldpath y newpath no están en el mismo sistema de ficheros.

       ENOTEMPTY  o  EEXIST
              newpath es un directorio no vacío, es decir, contiene entradas distintas  a  "."  y
              "..".

       EBUSY  rename  falla  porque  oldpath o newpath es un directorio que está siendo usado por
              algún proceso (tal vez como directorio de trabajo actual, como  directorio  raíz  o
              porque lo ha abierto para lectura) o está siendo usado por el sistema (por ejemplo,
              como punto de montaje), si bien el sistema considera esto un error.   (Dése  cuenta
              que  no  es  necesario  devolver EBUSY en tales casos - de todos modos, no hay nada
              incorrecto en cambiar de nombre - pero se permite devolver EBUSY si el  sistema  no
              puede manejar tales situaciones).

       EINVAL La nueva ruta contiene un prefijo de ruta de la antigua o, de forma más general, se
              ha intentado convertir un directorio en subdirectorio de si mismo.

       EMLINK El número de enlaces a oldpath ya  ha  alcanzado  el  máximo  permitido,  o  es  un
              directorio  y el directorio que contiene a newpath ha alcanzado el número máximo de
              enlaces.

       ENOTDIR
              Un componente usado como directorio en oldpath  o  newpath  no  es,  de  hecho,  un
              directorio.  O oldpath es un directorio y newpath existe pero no es un directorio.

       EFAULT oldpath o newpath apunta fuera de su espacio accesible de direcciones.

       EACCES No  se  permite el acceso de escritura al directorio que contiene oldpath o newpath
              para el identificador de usuario efectivo del proceso, o uno de los directorios  en
              oldpath  o  newpath  no  posee  permiso  de búsqueda (ejecución) para el proceso, o
              oldpath es un directorio y no posee permiso de escritura (necesario para actualizar
              la entrada ..).

       EPERM o EACCES
              El  directorio  que contiene oldpath tiene activo el bit pegajoso (sticky bit) y el
              identificador de usuario efectivo  del  proceso  no  es  ni  el  del  root,  ni  el
              identificador  de usuario del fichero a borrar ni del directorio que lo contiene, o
              newpath es un fichero existente y el directorio que lo contiene tiene activo el bit
              pegajoso  (sticky bit) y el idenficador de usuario efectivo del proceso no es ni el
              del root, ni el identificador de usuario del fichero a borrar ni del directorio que
              lo  contiene,  o el sistema de ficheros que contiene pathname no soporta el tipo de
              renombramiento solicitado.

       ENAMETOOLONG
              oldpath o newpath son demasiado largos.

       ENOENT Un directorio componente de oldpath  o  newpath no existe o es un enlace  simbólico
              colgante.

       ENOMEM No había suficiente memoria disponible en el núcleo.

       EROFS  El fichero se encuentra en un sistema de ficheros de sólo lectura.

       ELOOP  Se han encontrado demasiados enlaces simbólicos al resolver oldpath o newpath.

       ENOSPC El  dispositivo  que  contiene el fichero no tiene espacio para la nueva entrada de
              directorio.

CONFORME A

       POSIX, 4.3BSD, ANSI C

FALLOS

       En los sistemas de ficheros NFS no puede asumir que el fichero no ha sido renombrado si la
       operación  ha  fallado.  Si  el  servidor  renombra  el  fichero  y  después  cae,  la RPC
       retransmitida, que será procesada cuando el servidor se levante  de  nuevo,  provocará  un
       fallo.  Se  supone  que  la aplicación tratará este problema. Vea link(2) para un problema
       similar.

VÉASE TAMBIÉN

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