Provided by:
manpages-fr-dev_2.80.1-1_all 
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 pour les macros de test de fonctionnalité de la glibc (consultez
feature_test_macros(7)) :
getcwd() : _BSD_SOURCE || _XOPEN_SOURCE >= 500
get_current_dir_name() : _GNU_SOURCE
DESCRIPTION
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 le chemin du répertoire en cours nécessite un tampon plus long que
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.
Si buf est NULL, le comportement de getcwd() est indéfini.
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 lors de l’appel. 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. Il est possible (et même
fortement conseillé) de libérer le tampon avec free(3) lorsqu’il a été
obtenu ainsi.
get_current_dir_name() allouera avec malloc(3) une chaîne suffisamment
grande pour contenir le nom du répertoire. Si la variable
d’environnement PWD est configurée, et correcte, cette valeur sera
renvoyée.
getwd() n’allouera aucune mémoire. L’argument buf doit être un pointeur
sur une chaîne comportant au moins PATH_MAX octets. getwd() ne renverra
que les PATH_MAX premiers octets du chemin. Notez que PATH_MAX n’est
pas nécessairement une constante à la compilation. Elle peut dépendre
du système de fichiers, voire être illimitée. Pour des raisons de
portabilité et de sécurité, l’utilisation de getwd() est déconseillée.
VALEUR RENVOYÉE
NULL en cas d’échec, avec errno contenant le code d’erreur. En cas de
réussite buf est renvoyé. 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.
ENOENT Le répertoire en cours a été supprimé.
ERANGE L’argument size est inférieur à la longueur du nom du
répertoire. Allouez un tampon plus grand et ré-essayez.
CONFORMITÉ
getcwd() est conforme à POSIX.1-2001. getwd() est disponible sous
POSIX.1-2001 mais elle est marquée « LEGACY ». 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 fichiers.
VOIR AUSSI
chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)
COLOPHON
Cette page fait partie de la publication 2.80 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> ».