Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

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éplaçant dans un autre répertoire si nécessaire. Tous
       les autres liens vers le fichier (créés avec link(2)) sont inchangés. Les descripteurs  de
       fichier ouverts sur oldpath ne sont pas non plus affectés.

       Si  newpath  existe  déjà,  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 voie absent.

       Si  oldpath et newpath sont des liens existants correspondant au même fichier, rename() ne
       fait rien et renvoie un code de succès.

       Si newpath existe mais  que  l'opération  échoue  pour  une  raison  quelconque,  rename()
       garantit la présence d'une instance de newpath en place.

       oldpath  peut  être  un  répertoire.  Dans  ce cas, newpath doit être soit absent, soit un
       répertoire vide.

       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

       S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno  en
       conséquence.

ERREURS

       EACCES La  permission d'écrire est refusée dans le répertoire contenant oldpath ou newpath
              ou la permission de parcours est refusée pour  l'un  des  répertoires  des  chemins
              oldpath  ou  newpath,  ou  encore  oldpath  était  un  répertoire  et ne permet pas
              l'écriture  (nécessaire  pour  mettre  à  jour  l'entrée  ..).   (Consultez   aussi
              path_resolution(7).)

       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
              exemple). 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  permis  de  retourner  EBUSY  si  le  système
              n'arrive pas à gérer une telle situation).

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

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

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

       ELOOP  Trop de liens symboliques ont été rencontrés en parcourant oldpath ou newpath.

       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.

       ENAMETOOLONG
              oldpath ou newpath est trop long.

       ENOENT Le lien indiqué par oldpath n'existe pas ;  ou  un  répertoire  du  chemin  newpath
              n'existe pas ; ou oldpath ou newpath est une chaîne vide.

       ENOMEM Pas assez de mémoire pour le noyau.

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

       ENOTDIR
              Un élément du chemin d'accès 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.

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

       EPERM ou EACCES
              Le  répertoire  contenant  oldpath  a  le Sticky-bit (S_ISVTX) positionné, et l'UID
              effectif du processus n'est ni celui du fichier à déplacer, ni celui du  répertoire
              le  contenant,  et  le  processus  n'est  pas  privilégié  (sous Linux : n'a pas la
              capacité CAP_FOWNER ; ou newpath est  un  fichier  existant  et  le  répertoire  le
              contenant a son sticky bit positionné et l'UID effectif du processus n'est ni celui
              du fichier à déplacer, ni celui du répertoire le contenant, et le  processus  n'est
              pas  privilégié  (sous Linux : n'a pas la capacité CAP_FOWNER ; ou alors le système
              de fichiers contenant pathname ne permet pas le renommage de fichiers.

       EROFS  Le fichier se trouve sur un système de fichiers en lecture seule.

       EXDEV  oldpath et newpath ne sont pas sur le même système de fichiers.  (Linux  permet  de
              monter  un  système  de  fichiers à plusieurs endroits, mais rename() ne marche pas
              entre différents points de montage, même si le système de fichiers  monté  sur  les
              deux est le même.)

CONFORMITÉ

       BSD 4.3, C89, C99, POSIX.1-2001.

BOGUES

       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.  Consultez  link(2)  pour  un  cas
       similaire.

VOIR AUSSI

       mv(1),   chmod(2),   link(2),   renameat(2),  symlink(2),  unlink(2),  path_resolution(7),
       symlink(7)

COLOPHON

       Cette page fait partie de la publication 3.32 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <URL:http://po4a.alioth.debian.org/>  par  l'équipe  de  traduction francophone au sein du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <URL:http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau et l'équipe francophone de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   par   un  rapport  de  bogue  sur  le  paquet
       manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».