realpath(3) Library Functions Manual realpath(3)

realpath - Renvoyer le chemin d'accs absolu

Bibliothèque C standard (libc, -lc)

#include <limits.h>
#include <stdlib.h>
char *realpath(const char *restrict chemin,
               char *restrict chemin_rsolu);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

realpath():

    _XOPEN_SOURCE >= 500
        || /* glibc >= 2.19 : */ _DEFAULT_SOURCE
        || /* glibc <= 2.19 : */ _BSD_SOURCE

realpath dveloppe tous les liens symboliques, et rsout les rfrences  /./ ,  /../  ainsi que les caractres  /  supplmentaires dans la chane, termine par un caractre NULL, pointe par chemin pour produire une forme canonique du chemin absolu. Le chemin rsultant est stock sous la forme d'une chane termine par un caractre NULL pouvant contenir jusqu' PATH_MAX octets, dans le tampon point par chemin_rsolu. Le chemin rsultant ne traversera plus de liens symboliques et ne contiendra plus d'lments  /./ ou  /../ .

Si chemin_rsolu est NULL, alors realpath() utilise malloc(3) pour allouer un tampon allant jusqu' PATH_MAX octets pour contenir le chemin trouv, et retourne un pointeur sur ce tampon. L'appelant doit librer ce tampon avec free(3).

S'il n'y a pas d'erreur, realpath() renvoie un pointeur sur chemin_rsolu.

Sinon elle renvoie NULL, le contenu de chemin_rsolu n'est pas dfini et errno prend la valeur du code d'erreur.

La permission de recherche ou de lecture n'est pas accorde pour un composant du chemin d'accs.
chemin est NULL (avant la glibc2.3, cette erreur est aussi renvoye si chemin_rsolu est NULL).
Une erreur d'entre-sortie est survenue lors de la lecture sur le systme de fichiers.
Trop de liens symboliques ont été rencontrés en parcourant le chemin.
Un lment du chemin d'accs dpasse NAME_MAX caractres de long ou le chemin d'accs complet dpasse PATH_MAX caractres.
Le fichier indiqué n'existe pas.
Plus assez de mémoire.
Un élément du chemin d'accès n'est pas un répertoire.

Pour une explication des termes utilisés dans cette section, consulter attributes(7).

Interface Attribut Valeur
realpath() Sécurité des threads MT-Safe

Si l'appel choue avec EACCES ou ENOENT alors que chemin_rsolu n'est pas NULL, alors le prfixe de chemin qui n'est pas lisible ou qui n'existe pas est renvoy dans chemin_rsolu.

POSIX.1-2008.

4.4BSD, POSIX.1-2001, Solaris.

POSIX.1 indique que le comportement dans le cas o chemin_rsolu est NULL dpend de l'implmentation. POSIX.1-2008 spcifie le comportement dcrit dans cette page.

Dans 4.4BSD 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 mme la section des BOGUES.)

La version du standard POSIX.1-2001 de cette fonctions est errone par construction, car elle ne permet pas de connatre la taille ncessaire pour le tampon de sortie chemin_rsolu. D'aprs POSIX.1-2001, un tampon de taille PATH_MAX suffit, mais PATH_MAX n'est pas ncessairement une constante dfinie et peut tre obtenue avec pathconf(3). En outre, interroger pathconf(3) n'aide pas vraiment, car d'une part POSIX prvient que les rsultats de pathconf(3) peuvent tre immenses et inappropris pour allouer de la mmoire et d'autre part pathconf(3) peut renvoyer -1 indiquant que PATH_MAX est illimit. La fonctionnalit chemin_rsolu == NULL, non standard dans POSIX.1-2008, permet d'viter ces problmes.

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

La traduction française de cette page de manuel a été créée par #-#-#-#-# min-002-occurences.po (perkamon) #-#-#-#-#, Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-003-occurences.po (perkamon) #-#-#-#-#, Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-004-occurences.po (perkamon) #-#-#-#-#, Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-010-occurences.po (perkamon) #-#-#-#-#, Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Thomas Vincent <tvincent@debian.org>, #-#-#-#-# min-020-occurences.po (perkamon) #-#-#-#-#, Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, #-#-#-#-# min-100-occurences.po (perkamon) #-#-#-#-#, Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Philippe MENGUAL <jpmengual@debian.org>, Jean-Pierre Giraud <jean-pierregiraud@neuf.fr> et #

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

31 octobre 2023 Pages du manuel de Linux 6.06