Provided by: manpages-fr-dev_4.21.0-2_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 │
       └───────────────────────────────────────────────────────────────────┴──────────────────────┴─────────────┘

STANDARDS

       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, 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.

       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.

   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.

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⟩.