Provided by: manpages-es_1.55-8_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)