Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       getcwd, getwd, get_current_dir_name - Obtenir le répertoire de travail actuel

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <unistd.h>

       char *getcwd(char buf[.size], size_t size);
       char *get_current_dir_name(void);

       [[obsolète]] char *getwd(char buf[PATH_MAX]);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       get_current_dir_name() :
           _GNU_SOURCE

       getwd() :
           Depuis la glibc 2.12:
               (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
                   || /* glibc >= 2.19 : */ _DEFAULT_SOURCE
                   || /* glibc <= 2.19 : */ _BSD_SOURCE
           Avant la glibc 2.12 :
               _BSD_SOURCE || _XOPEN_SOURCE >= 500

DESCRIPTION

       Ces fonctions renvoient une chaîne terminée par un octet NULL contenant un  chemin  absolu
       correspondant au répertoire de travail actuel du processus appelant. Le chemin est renvoyé
       comme résultat de la fonction et par le paramètre buf, s'il est présent.

       La fonction getcwd() copie le chemin d'accès absolu du répertoire de travail courant  dans
       la chaîne pointée par buf, qui est de longueur size.

       Si  la  taille  du  chemin  absolu  du  répertoire  de travail en cours, octet NULL de fin
       compris, dépasse size octets, la fonction renvoie NULL et errno contient le code  d'erreur
       ERANGE.  Une  application  doit  détecter  cette erreur et allouer un tampon plus grand si
       besoin est.

       En tant qu'extension de la norme POSIX.1-2001, la version de la glibc de  getcwd()  alloue
       le  tampon  dynamiquement  avec malloc(3) si buf est NULL. Dans ce cas, le tampon alloué a
       une taille de size sauf si size vaut zéro, auquel  cas  buf  est  alloué  avec  la  taille
       nécessaire. L'appelant doit libérer avec free(3) le tampon renvoyé.

       get_current_dir_name()  allouera  avec  malloc(3)  une  chaîne  suffisamment  grande  pour
       contenir le nom du chemin  absolu  du  répertoire  de  travail  courant.  Si  la  variable
       d'environnement  PWD  est  configurée, et correcte, cette valeur sera renvoyée. L'appelant
       doit libérer avec free(3) le tampon renvoyé.

       getwd() n'allouera aucune mémoire (avec malloc(3)). Le paramètre buf doit être un pointeur
       sur  une  chaîne  comportant  au moins PATH_MAX octets. Si la longueur du chemin absolu du
       répertoire de travail actuel, caractère NULL de fin compris, dépasse PATH_MAX octets, NULL
       est  renvoyé  et  errno  prend  la  valeur  ENAMETOOLONG. Notez que sur certains systèmes,
       PATH_MAX peut ne pas être une constante connue à la compilation ; de plus, sa valeur  peut
       dépendre du système de fichiers, consultez pathconf(3). Pour des raisons de portabilité et
       de sécurité, l'utilisation de getwd() est déconseillée.

VALEUR RENVOYÉE

       En cas de succès, ces fonctions renvoient un pointeur vers une chaîne contenant le  chemin
       du  répertoire  de travail actuel. Dans le cas de getcwd() et getwd() il s'agit de la même
       valeur que buf.

       En cas d'échec, ces fonctions renvoient NULL, et remplissent errno avec le code  d'erreur.
       Le contenu de la chaîne pointée par buf est indéfini en cas d'erreur.

ERREURS

       EACCES Impossible de lire ou de parcourir un composant du chemin d'accès.

       EFAULT buf pointe sur une adresse illégale.

       EINVAL L'argument size vaut zéro et buf n'est pas un pointeur NULL.

       EINVAL getwd() : buf est NULL.

       ENAMETOOLONG
              getwd() :  La  taille  de  la  chaîne, terminée par un octet NULL, du chemin absolu
              dépasse PATH_MAX octets.

       ENOENT Le répertoire en cours a été supprimé.

       ENOMEM Plus assez de mémoire.

       ERANGE Le paramètre size est inférieur à la longueur du nom du chemin absolu du répertoire
              de  travail,  caractère  NULL  de  fin  compris.  Allouez  un  tampon plus grand et
              réessayez.

ATTRIBUTS

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

       ┌────────────────────────────────────────────────────┬──────────────────────┬─────────────┐
       │InterfaceAttributValeur      │
       ├────────────────────────────────────────────────────┼──────────────────────┼─────────────┤
       │getcwd(), getwd()                                   │ Sécurité des threads │ MT-Safe     │
       ├────────────────────────────────────────────────────┼──────────────────────┼─────────────┤
       │get_current_dir_name()                              │ Sécurité des threads │ MT-Safe env │
       └────────────────────────────────────────────────────┴──────────────────────┴─────────────┘

VERSIONS

       POSIX.1-2001 ne spécifie pas le comportement de getcwd() si buf est NULL.

       POSIX.1-2001 ne définit aucune erreur pour getwd().

VERSIONS

   Différences entre bibliothèque C et noyau
       Sur Linux, le noyau fournit un appel système getcwd()  que  les  fonctions  décrites  dans
       cette  page  s'efforceront  d'utiliser. L'appel système prend les mêmes paramètres que les
       fonctions de la bibliothèque du même nom, mais  il  se  limite  à  envoyer  tout  au  plus
       PATH_MAX octets (avant Linux 3.12, la limite de taille du chemin renvoyé était celle de la
       page du système. Sur de nombreuses architectures, PATH_MAX et la  taille  de  la  page  du
       système  valent 4096 octets, mais certaines architectures ont une page plus grande). Si la
       taille du chemin du répertoire de travail actuel dépasse  cette  limite,  l'appel  système
       échoue  avec  l'erreur  ENAMETOOLONG.  Dans  ce  cas,  les fonctions de la bibliothèque se
       rabattent sur une autre implémentation (plus lente) qui renvoie tout le chemin.

       Suite à un changement dans Linux 2.6.36, le chemin renvoyé par  l'appel  système  getcwd()
       sera  préfixé par la chaîne « (unreachable) » si le répertoire actuel ne se situe pas sous
       la racine du processus actuel (par exemple parce que le  processus  a  défini  un  nouveau
       système  de fichiers racine en utilisant chroot(2) sans transférer son dossier actuel dans
       cette racine). Un tel comportement peut aussi être causé par un utilisateur non privilégié
       qui va du répertoire actuel vers un autre espace de noms de montage. Quand ils ont affaire
       à un chemin issu de sources non fiables, les appelants des fonctions décrites  dans  cette
       page  doivent  envisager de vérifier si le chemin renvoyé commence par « / » ou « ( » pour
       éviter d'interpréter à tort un chemin non atteignable comme un chemin relatif.

STANDARDS

       getcwd()
              POSIX.1-2008.

       get_current_dir_name()
              GNU.

       getwd()
              Aucun.

HISTORIQUE

       getcwd()
              POSIX.1-2001.

       getwd()
              POSIX.1-2001, mais marqué comme LEGACY. Supprimé dans POSIX.1-2008. Utilisez plutôt
              getcwd().

       Sous   Linux,   ces  fonctions  utilisent  l'appel  système  getcwd()  (disponible  depuis
       Linux 2.1.92). Sur des systèmes plus  anciens,  elles  interrogeaient  /proc/self/cwd.  Si
       l'appel  système et le système de fichiers proc sont absents, une implémentation générique
       est utilisée. Dans ce cas seulement la fonction échoue en renvoyant EACCES sous Linux.

NOTES

       Ces fonctions sont souvent utilisées pour sauvegarder le répertoire de  travail  afin  d'y
       revenir  plus  tard.  Ouvrir  le  répertoire  courant  (« . ») et appeler fchdir(2) pour y
       revenir est habituellement une  alternative  plus  rapide  et  plus  fiable  (surtout  sur
       d'autres systèmes que Linux) si l'on dispose de suffisamment de descripteurs de fichier.

BOGUES

       Depuis  une modification dans Linux 2.6.36, qui a ajouté « (unreachable) », getcwd() de la
       glibc échoue pour se conformer à POSIX et renvoie un chemin relatif quand l'API  a  besoin
       d'un  chemin  absolu. Depuis la glibc 2.27, c'est corrigé ; l'appel getcwd() à partir d'un
       tel endroit échouera avec ENOENT.

VOIR AUSSI

       pwd(1), chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  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> et Jean-Philippe MENGUAL
       <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.