Provided by:
manpages-es_1.55-10_all 
NOMBRE
rename - cambia el nombre y/o posicion de un fichero
SINOPSIS
#include <stdio.h>
int rename(const char *oldpath, const char *newpath);
DESCRIPCI'ON
rename renombre un fichero, moviendolo entre directorios si asi se
requiere.
Cualquier otro enlace fisico al fichero (como los creados usando
link(2)) no se ve afectado.
Si newpath ya existe sera automaticamente reemplazado (sujeto a unas
pocas condiciones - ver ERRORES mas 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 operacion falla por alguna razon, rename
garantiza dejar una instacia de newpath en el lugar.
Sin embargo, durante una sobreescritura habra probablemente un
intervalo en que tanto oldpath y newpath se refieran al fichero que se
esta renombrando.
Si oldpath se refiere a un enlace simbolico, el enlace sera renombrado;
si newpath se refiere a un enlace simbolico, el enlace sera
sobreescrito.
VALOR DEVUELTO
En caso de exito 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 estan en el mismo sistema de ficheros.
ENOTEMPTY o EEXIST
newpath es un directorio no vacio, es decir, contiene entradas
distintas a "." y "..".
EBUSY rename falla porque oldpath o newpath es un directorio que esta
siendo usado por algun proceso (tal vez como directorio de
trabajo actual, como directorio raiz o porque lo ha abierto para
lectura) o esta siendo usado por el sistema (por ejemplo, como
punto de montaje), si bien el sistema considera esto un error.
(Dese 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 mas general, se ha intentado convertir un directorio en
subdirectorio de si mismo.
EMLINK El numero de enlaces a oldpath ya ha alcanzado el maximo
permitido, o es un directorio y el directorio que contiene a
newpath ha alcanzado el numero maximo 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 busqueda (ejecucion) 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 simbolico colgante.
ENOMEM No habia suficiente memoria disponible en el nucleo.
EROFS El fichero se encuentra en un sistema de ficheros de solo
lectura.
ELOOP Se han encontrado demasiados enlaces simbolicos 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 operacion ha fallado. Si el servidor renombra el
fichero y despues cae, la RPC retransmitida, que sera procesada cuando
el servidor se levante de nuevo, provocara un fallo. Se supone que la
aplicacion tratara este problema. Vea link(2) para un problema similar.
V'EASE TAMBI'EN
link(2), unlink(2), symlink(2), mv(1)