Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
realpath - Renvoie le chemin d'acces absolu
SYNOPSIS
#include <limits.h>
#include <stdlib.h>
char *realpath(const char *path, char *resolved_path);
Exigences de macros de test de fonctionnalites pour la glibc (consultez
feature_test_macros(7)) :
realpath() :
_BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
DESCRIPTION
realpath developpe tous les liens symboliques, et resout les references
a << /./ >>, << /../ >> ainsi que les caracteres << / >>
supplementaires dans la chaine, terminee par un caractere nul, pointee
par path pour produire une forme canonique du chemin absolu. Le chemin
resultant est stocke sous la forme d'une chaine terminee par un
caractere nul pouvant contenir jusqu'a PATH_MAX octets, dans le tampon
pointe par resolved_path. Le chemin resultant ne traversera plus de
liens symboliques, et ne contiendra plus d'elements << /./ >> ou
<< /../ >>.
Si resolved_path est NULL, alors realpath() utilise malloc(3) pour
allouer un tampon allant jusqu'a PATH_MAX octets pour contenir le
chemin trouve, et retourner un pointeur sur ce tampon. L'appelant doit
liberer ce tampon avec free(3).
VALEUR RENVOY'EE
S'il n'y a pas d'erreur, realpath() renvoie un pointeur sur
resolved_path.
Sinon elle renvoie NULL, le contenu de resolved_path n'est pas defini,
et errno prend la valeur du code d'erreur.
ERREURS
EACCES La permission de recherche ou de lecture n'est pas accordee pour
un composant du chemin d'acces.
EINVAL Soit path, soit resolved_path est NULL (dans la libc5, cela
declenchait une erreur de segmentation). Mais voir quand meme la
section NOTES ci-dessous.
EIO Une erreur d'entree-sortie est survenue lors de la lecture sur
le systeme de fichiers.
ELOOP Trop de liens symboliques ont ete rencontres en parcourant le
chemin.
ENAMETOOLONG
Un element du chemin d'acces depasse NAME_MAX caracteres de
long, ou le chemin d'acces complet depasse PATH_MAX caracteres.
ENOENT Le fichier indique n'existe pas.
ENOTDIR
Un element du chemin d'acces n'est pas un repertoire.
VERSIONS
Sous Linux, cette fonction est apparue dans la libc 4.5.21.
CONFORMIT'E
BSD 4.4, POSIX.1-2001.
POSIX.1 indique que le comportement dans le cas ou resolved_path est
NULL depend de l'implementation. POSIX.1-2008 specifie le comportement
decrit dans cette page.
NOTES
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(3). 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 meme la section des 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 donne dans <unistd.h> dans les
libc4 et libc5, mais dans <stdlib.h> partout ailleurs.
BOGUES
La version du standard POSIX.1-2001 de cette fonctions est erronee par
construction car elle ne permet pas de connaitre la taille necessaire
pour le tampon de sortie resolved_path. D'apres POSIX.1-2001, un tampon
de taille PATH_MAX suffit, mais PATH_MAX n'est pas necessairement une
constante definie et peut etre obtenue avec pathconf(3). En outre,
interroger pathconf(3) n'aide pas vraiment, car d'une part POSIX
previent que les resultats de pathconf(3) peuvent etre immenses et
inappropries pour allouer de la memoire et d'autre part pathconf(3)
peut renvoyer -1 indiquant que PATH_MAX est illimite. La fonctionnalite
resolved_path == NULL, non standard dans POSIX.1-2008, permet d'eviter
ces problemes.
Les implementations dans les libc4 et libc5 contenaient un debordement
de tampon (corrige dans la libc-5.4.13). Ainsi, les programmes Set-UID,
comme mount(8), ont besoin d'une version privee de cette routine.
VOIR AUSSI
readlink(2), canonicalize_file_name(3), getcwd(3), pathconf(3),
sysconf(3)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe 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). Nicolas
Francois et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
20 septembre 2010 REALPATH(3)