RENAME(2)          Manuel du programmeur Linux          RENAME(2)


NOM
       rename - Changer le nom ou l'emplacement d'un fichier.

SYNOPSIS
       #include <stdio.h>

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

DESCRIPTION
       rename  renomme  un fichier, en le déplacant vers un autre
       répertoire si besoin est.

       Tous les autres liens matériels (créés avec link)  restent
       inchangés.

       Si  newpath  existe  deja,  il  sera écrasé (avec quelques
       restrictions, voir le paragraphe ERREURS), de manière à ce
       qu'à  aucun moment, un autre processus tentant d'accéder à
       newpath ne le voit absent. Si l'opération échoue pour  une
       raison  quelconque,  rename  garantit  la  présence  d'une
       instance de newpath en place.

       Néanmoins, pendant un écrasement, il se  trouve  un  court
       instant  pendant  lequel à la fois oldpath et newpath font
       référence au fichier.

       Si oldpath correspond à un lien symbolique,  le  lien  est
       renommé;  si  newpath  correspond à un lien symbolique, le
       lien est écrasé.

VALEUR RENVOYÉE
       rename renvoie 0 s'il réussit, ou -1 s'il  échoue,  auquel
       cas errno contient le code d'erreur.

ERREURS
       EISDIR newpath  est  un  répertoire  existant mais oldpath
              n'est pas un répertoire

       EXDEV  oldpath et newpath ne sont pas sur le même  système
              de fichiers.

       ENOTEMPTY ou EEXIST
              newpath  est un répertoire non vide (contient autre
              chose que "." et "..").

       EBUSY  Le renommage a échoué car oldpath ou newpath est un
              répertoire  utilisé  par  un  processus  (peut-être
              comme répertoire de travail,  ou  comme  répertoire
              racine,  ou  ouvert  en lecture), ou il est utilisé
              par le système (comme point de  montage  par  exem­
              ple).   Le  système  a donc considéré qu'il y avait
              une erreur.  (Notez qu'il n'est  pas  indispensable
              de  renvoyer EBUSY dans un tel cas - rien n'empêche
              d'effectuer le renommage malgré tout - mais il  est



Linux                      18 Mai 1999                          1





RENAME(2)          Manuel du programmeur Linux          RENAME(2)


              permis  de  retourner  EBUSY si le système n'arrive
              pas à gérer une telle situation).

       EINVAL Une partie du nouveau chemin  contient  en  préfixe
              l'ancien  chemin,  ou  plus généralement, un réper­
              toire ne peut pas être  déplacé  dans  ses  propres
              sous-répertoires.

       EMLINK oldpath  a déjà un nombre maximal de liens, ou bien
              c'est un répertoire,  et  le  répertoire  contenant
              newpath a le nombre maximal de liens.

       ENOTDIR
              Un  élément  utilisé  dans oldpath ou newpath n'est
              pas un répertoire, ou oldpath est un répertoire  et
              newpath existe mais n'est pas un répertoire.

       EFAULT oldpath  ou  newpath pointent en dehors de l'espace
              d'adressage accessible.

       EACCES Les droits d'écriture dans le répertoire  contenant
              oldpath ou newpath ne sont pas autorisés pour l'UID
              effectif du processus, ou bien un  des  répertoires
              de oldpath ou newpath ne permet pas le parcours, ou
              encore oldpath était un répertoire et ne permet pas
              l'écriture  (nécessaire  pour  mettre  à  jour  les
              entrées `.' et `..'  ).

       EPERM  Le répertoire contenant oldpath  a  son  Sticky-bit
              positionné, et l'UID effectif du processus n'est ni
              celui de Root, ni celui du fichier à  déplacer,  ni
              celui  du  répertoire  le  contenant,  ou  alors le
              système de fichiers contenant  pathname  ne  permet
              pas le renommage de fichiers.

       ENAMETOOLONG
              oldpath ou newpath est trop long.

       ENOENT Un  répertoire  contenu  dans  oldpath  ou  newpath
              n'existe pas, ou est un  lien  symbolique  pointant
              nulle part.

       ENOMEM Pas assez de mémoire pour le noyau.

       EROFS  Le  fichier  est sur un système de fichiers en lec­
              ture seule.

       ELOOP  oldpath ou newpath contient  une  référence  circu­
              laire (à travers un lien symbolique).

       ENOSPC Le  périphérique  contenant  le  fichier n'a pas de
              place pour une nouvelle entrée de répertoire.





Linux                      18 Mai 1999                          2





RENAME(2)          Manuel du programmeur Linux          RENAME(2)


CONFORMITÉ
       POSIX, BSD 4.3, ANSI C

BUGS
       Sur les systèmes de fichiers NFS, ce n'est pas  parce  que
       l'opération  a  échoué que le fichier n'a pas été renommé.
       Si le serveur effectue le déplacement, et  s'effondre,  la
       RPC  transmise  qui sera traitée lorsque le serveur sera à
       nouveau en état va indiquer un échec.  L'application  doit
       supporter  ce  genre de problème. Voir link(2) pour un cas
       similaire.

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


TRADUCTION
       Christophe Blaess, 1997.







































Linux                      18 Mai 1999                          3