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