Provided by: manpages-fr-dev_4.27.0-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 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                          getcwd(3)