Votre IP: 38.107.179.242 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 27-03-2008 20:23:44

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]


REALPATH

 

Index

  1. NOM
  2. SYNOPSIS
  3. DESCRIPTION
  4. VALEUR RENVOYÉE
  5. ERREURS
  6. NOTES
  7. BOGUES
  8. HISTORIQUE
  9. CONFORMITÉ
  10. VOIR AUSSI
  11. TRADUCTION

 

NOMIndex

realpath - Renvoie le chemin d'accès absolu.  

SYNOPSISIndex

#include <sys/param.h>
#include <stdlib.h>

char *realpath (const char *path, char *resolved_path);
 

DESCRIPTIONIndex

realpath développe tous les liens symboliques, et résout les références à « /./ », « /../ » ainsi que les caractères « / » supplémentaires dans la chaîne, terminée par un caractère nul, pointée par path et stocke le résultat dans le tampon de taille PATH_MAX pointé par resolved_path. Le chemin résultant ne traversera plus de liens symboliques, et ne contiendra plus d'éléments « /./ » ou « /../ ».  

VALEUR RENVOYÉEIndex

S'il n'y a pas d'erreur, realpath() renvoie un pointeur sur resolved_path.
Sinon elle renvoie NULL, et le contenu de resolved_path n'est pas défini. La variable globale errno contient le code d'erreur.  

ERREURSIndex

EACCES
La permission de recherche ou de lecture n'est pas accordée pour un composant du chemin d'accès.
EINVAL
Soit path, soit resolved_path est NULL (dans la libc5, cela déclenchait une erreur de segmentation). Mais voir quand même la section NOTES ci-dessous.
EIO
Une erreur d'entrée-sortie s'est produite sur le système de fichiers.
ELOOP
Trop de liens symboliques rencontrés.
ENAMETOOLONG
Un élément du chemin d'accès dépasse NAME_MAX caractères de long, ou le chemin d'accès complet dépasse PATH_MAX caractères.
ENOENT
Le fichier indiqué n'existe pas.
ENOTDIR
Un élément du chemin d'accès n'est pas un répertoire.
 

NOTESIndex

L'implémentation de realpath() de la glibc fournit une extension non standard. Si resolved_path est NULL, alors realpath() utilise malloc(3) pour allouer un tampon allant jusqu'à PATH_MAX octets pour contenir le chemin trouvé, et retourner un pointeur sur ce tampon. L'appelant doit libérer ce tampon avec free(3).  

BOGUESIndex

N'utilisez jamais cette fonction. Sa conception est erronée (à moins d'utiliser la caractéristique non standard resolved_path == NULL) car elle ne permet pas de connaître la taille nécessaire pour le tampon de sortie resolved_path. D'après POSIX, un tampon de taille PATH_MAX suffit, mais PATH_MAX n'est pas nécessairement une constante définie et peut être obtenue avec pathconf(). En outre, interroger pathconf() n'aide pas vraiment, car d'une part POSIX prévient que les résultats de pathconf() peuvent être immenses et inappropriés pour allouer de la mémoire et d'autre part pathconf() peut renvoyer -1 indiquant que PATH_MAX est illimité.
Les implémentations dans les libc4 et libc5 contenaient un débordement de tampon (corrigé dans la libc-5.4.13). Ainsi, les programmes Set-UID, comme mount, ont besoin d'une version privée de cette routine.  

HISTORIQUEIndex

La fonction realpath() est apparue dans BSD 4.4, due à Jan-Simon Pendry. Sous Linux, cette fonction est apparue dans la libc 4.5.21.  

CONFORMITÉIndex

BSD 4.4, POSIX.1-2001.
Dans BSD 4.4 et Solaris la limite de longueur du chemin est MAXPATHLEN (dans <sys/param.h>). SUSv2 conseille PATH_MAX et NAME_MAX, dans <limits.h> ou fournis par pathconf(). Un fragment de code typique serait
#ifdef PATH_MAX
  path_max = PATH_MAX;
#else
  path_max = pathconf (path, _PC_PATH_MAX);
  if (path_max <= 0)
    path_max = 4096;
#endif
(Mais voir quand même la section BOGUES).
Les versions BSD 4.4, Linux et SUSv2 renvoient toujours un chemin absolu. Solaris peut renvoyer un chemin relatif si l'argument path est relatif. Le prototype de realpath() est donné dans <unistd.h> dans les libc4 et libc5, mais dans <stdlib.h> partout ailleurs.  

VOIR AUSSIIndex

readlink(2), canonicalize_file_name(3), getcwd(3), pathconf(3), sysconf(3)  

TRADUCTIONIndex

Cette page de manuel a été traduite et mise à jour par Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions disponibles sur http://manpagesfr.free.fr/, mais est gérée par l'équipe francophone de traduction de Debian au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS