Loading

NOM

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

SYNOPSIS

       #include <unistd.h>

       char *getcwd(char *buf, size_t size);

       char *getwd(char *buf);

       char *get_current_dir_name(void);

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

       getcwd() : _BSD_SOURCE || _XOPEN_SOURCE >= 500
       get_current_dir_name() : _GNU_SOURCE

       Ces fonctions renvoient une chaîne terminée par une octet nul 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,
       caractère  nul 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.

       Comme une extension du standard POSIX.1-2001, la version  Linux (libc4,
       libc5,  glibc)  de  getcwd()  alloue  le  tampon   dynamiquement   avec
       malloc(3), si buf est NULL. Dans ce cas, le tampon alloué a la longueur
       size à moins que size soit égal à 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 nul de fin compris, dépasse PATH_MAX octets, NULL est
       renvoyé et errno prend la valeur ENAMETOOLONG. Notez que  sur  certains
       système,   PATH_MAX  peut  ne  pas  être  une  constante  connue  à  la
       compilation ; de plus, sa valeur peut dépendre du système de  fichiers,
       voire être illimitée, voir 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 en courant. 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 nul, du
              chemin absolu dépasse PATH_MAX octets.

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

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

CONFORMITÉ

       getcwd() se conforme à POSIX.1-2001. Notez cependant  que  POSIX.1-2001
       laisse le comportement de getcwd() non spécifié si buf est NULL.

       getwd()   est  présent  dans  POSIX.1-2001,  mais  marquée  « LEGACY ».
       POSIX.1-2008 supprime la spécification de getwd()  et  POSIX.1-2001  ne
       définit aucune erreur pour getwd(). Utilisez getcwd() à la place.

       get_current_dir_name() est une extension GNU.

NOTES

       Sous  Linux,  la  fonction  getcwd()  est  un  appel système (depuis le
       2.1.92).  Sur   des   systèmes   plus   anciens,   elle   interrogerait
       /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 peut renvoyer EACCES sous Linux.

       Ces  fonctions  sont  souvent  utilisées  pour  sauver 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.

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       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, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou 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> ».