RENAME(2)

NOMBRE
rename - cambia el nombre o localizacion de un fichero

SINOPSIS
#include <unistd.h>

int rename(const char *antiguo-path, const char *nuevo-path);

DESCRIPCION
rename renombra un fichero, moviéndolo entre directorios si se requiere. Cualquier otro nexo al archivo (como los creados usando link) no son afectados. Si newpath todavía existe será automáticamente sobreescrito (sujeto a a unas pocas condiciones - ver ERRORES más adelante),no obstante no hay punto al cual otro proceso que intente acceder a newpath se encontrará extrañando. Si newpath existe pero la operación falla por cualqier circunstancia o el sistema cae, rename da garantías para dejar una instancia de newpath en el lugar. Como siempre, cuando se sobreescribe habría probablemente una ventana en la cual oldpath y newpath se refieren al archivo inicialmente renombrado. Si oldpath se refiere a un enlace simbólico, el enlace es renombrado; si newpath se refiere a un enlace simbólico el enlace será sobreescrito.

VALORES DEVULTOS
Si éxito, cero es devuelto. Si error, -1 es devuelto, y errno está configurado apropiadamente.

ERRORES

EISDIR
    newpath es un directorio existente, pero oldpath no es un directorio.

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

ENOTEMPTY
    newpath es un directorio no vacío.

EBUSY
    newpath existe y es el actual directorio de trabajo o directoio root de algunos procesos.

EEXIST
    El nuevo pathname contiene un prefijo de path del anterior.

EINVAL
    Fue hecho un intento de crear un directorio un subdirectoirio de sí mismo.

EMLINK
    oldpath todavía tiene el máximo número de enlaces a él, o era un directorio y del directorio que contenía newpath tenía el máximo número de enlace.

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

EFAULT
    oldpath o newpath apuntan fuera de su espacio de direccionamiento accesible."

EACCES
    El acceso de escritura del directorio que contenía oldpath o newpath no está permitido por el proceso uid efectivo, o uno de los directorios en oldpath o newpath no permiten permisos de búsqueda(ejecución), o oldpath era un directorio y no permitió el permiso de escrituradid (necesitado para actualizar la .. entrada).

EPERM
    El directorio que contenía oldpath tiene activo el sticky-bit set y el efectivo proceso de uid no es ni el uid del fichero a ser borrado ni ese directorio que lo contiene, o el sistema de ficheros que contiene pathname no soporta renombramientos de los tipos requeridos.

ENAMETOOLONG
    oldpath o newpath eran demasiado largos.

ENOENT
    Un componente del directorio en oldpath o newpath no existe o es un enlace simbólico balanceado(supongo inistable).

ENOMEM
    Insuficiente memoria kernel estaba disponible.

EROFS
    El fichero está en un sistema de ficheros de sólo lectura.

ELOOP
    oldpath o newpath contienen una referencia a un enlace simbólico circular, es decir, un enlace simbólico , cuya expanción contiene una referencia asímismo.

ENOSPC
    El dispositivo que contiene el fichero no tiene habitación(supongo espacio)para la nueva entrada de diretorio.

CONFORME A
POSIX, 4.3BSD, ANSI C

BUGS
En los sistemas de ficheros NFS, usted puede no asumir que si la operación falla el fichero no habrá sido renombrado. Si el servidor hace la operación de renombrar y luego cae, el RPC transmitido, el cual será procesado cuando el servidor se levante de nuevo, causará u fallo. The application is expected to deal with this. Ver link(2) para problemas similares.

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