rename   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 4 juin 1998
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
rename - Changer le nom ou l'emplacement d'un fichier  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <stdio.h>

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




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
rename() renomme un fichier, en le déplaçant vers un autre répertoire si besoin est. Tous les autres liens matériels (créés avec link(2)) restent inchangés. Les descripteurs de fichiers ouverts sur oldpath restent également inchangés.

Si oldpath et newpath sont des liens matériels existants faisant référence au même fichier, rename() ne fait rien et renvoie un code de réussite.

Si newpath existe déjà, il sera écrasé (avec quelques restrictions, voir la section 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.

oldpath peut spécifier un répertoire. Dans ce cas, soit newpath ne doit pas exister, soit il doit être 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
rename() renvoie 0 s'il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 ..). (Voir 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
oldpath ou newpath contient une référence circulaire (à travers un lien symbolique).
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
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.
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 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.
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 est sur un système de fichiers en lecture seule.
EXDEV
oldpath et newpath ne sont pas sur le même système de fichiers monté. (Linux permet à un système de fichiers d'être monté en plusieurs endroits, mais rename() ne traverse pas les différents points de montage, même si le même système de fichier est monté sur chacun d'eux.)
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
BSD 4.3, C89, C99, POSIX.1-2001.  



BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mv(1), chmod(2), link(2), renameat(2), symlink(2), unlink(2), path_resolution(7)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 13 octobre 1996 et révisée le 27 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 rename ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
BOGUES
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EACCESERREURS
EBUSYERREURS
EFAULTERREURS
EINVALERREURS
EISDIRERREURS
ELOOPERREURS
EMLINKERREURS
ENAMETOOLONGERREURS
ENOENTERREURS
ENOMEMERREURS
ENOSPCERREURS
ENOTDIRERREURS
ENOTEMPTY ou EEXISTERREURS
EPERM ou EACCESERREURS
EROFSERREURS
EXDEVERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:51:10, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional