Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
GETCWD
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- NOTES
- CONFORMITÉ À
- VOIR AUSSI
- TRADUCTION
NOM
getcwd, get_current_dir_name, getwd - Obtenir le répertoire courant.
SYNOPSIS
#include <unistd.h>
char * getcwd (char * buf, size_t size);
char * get_current_dir_name (void);
char * getwd (char * buf);
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(), 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() lorsqu'il a été
obtenu ainsi.
get_current_dir_name(), qui ne possède un prototype que si la constante
_GNU_SOURCE est définie, 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(), qui ne possède un prototype que si les constantes _BSD_SOURCE
ou _XOPEN_SOURCE_EXTENDED sont définies, 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 nom réel. 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.
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.
CONFORMITÉ À
POSIX.1-2001.
VOIR AUSSI
chdir(2), fchdir(2), open(2), unlink(2), free(3),
malloc(3), feature_test_macros(7)
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.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|