> Linux Reviews > man >

getcwd

Obtenir le répertoire courant.


  1. getcwd.2.man
  2. getcwd.3.man


1. getcwd.2.man

Manpage of GETCWD

GETCWD

Section: Manuel du programmeur Linux (3)
Updated: 28 février 2000
Index Return to Main Contents
 

NOM

getcwd - Obtenir le répertoire courant.  

SYNOPSIS

#include <linux/unistd.h>

long *getcwd (char *tampon, unsigned longlongueur);
 

DESCRIPTION

La fonction getcwd() copie le chemin d'accès absolu du répertoire de travail courant dans la chaîne pointée par tampon, qui est de longueur longueur.

Si le chemin du répertoire en cours nécessite un tampon plus long que longueur 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.

 

VALEUR RENVOYÉE

La longueur du chemin en cas de réussite, une valeur négative en cas d'échec (par exemple si le répertoire en cours n'est pas lisible).  

NOTES

La version de la bibliothèque libc (getcwd(3)) renvoie un pointeur sur un tableau de caractères. L'appel système du noyau renvoie la longueur du tampon rempli (incluant le '\0' final), ou un nombre négatif pour signaler une erreur. La version de la libc devrait donc être :

        char *getcwd(char * buf, longueur_t longueur)
        {
                int retval = sys_getcwd(buf, longueur);
                if (retval >= 0)
                        return buf;
                errno = -retval;
                return NULL;
        }

Cette version serait plus rapide que la version actuelle getcwd(3) qui scanne récursivement '..' jusqu'à atteindre / alors que getcwd(2) utilise les possibilités du dentries cache.  

ERREURS

EFAULT
Erreur lors de la copie de la page tampon allouée dans le noyau vers le tampon alloué par la libc dans l'espace utilisateur.
ENOENT
répertoire inexistant.
ENOMEM
pas assez de mémoire pour allouer une page intermédiaire.
ERANGE
longueur n'est pas assez grande pour stocker le chemin absolu.

 

VOIR AUSSI

chdir(2), getcwd(3),
/usr/src/linux/fs/dcache.c

 

DISPONIBILITÉ

Cet appel système a été ajouté aux noyaux 2.3.x.

 

AUTEUR

Thierry Vignaud <tvignaud@mandrakesoft.com>, 2000  

TRADUCTION

Thierry Vignaud <tvignaud@mandrakesoft.com>, 2000


 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
NOTES
ERREURS
VOIR AUSSI
DISPONIBILITÉ
AUTEUR
TRADUCTION

This document was created by man2html using the manual pages.
Time: 17:36:45 GMT, October 23, 2013

2. getcwd.3.man

Manpage of GETCWD

GETCWD

Section: Manuel du programmeur Linux (3)
Updated: 22 avril 2002
Index Return to Main Contents
 

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 extension de la norme POSIX.1-2001, la version Linux (libc4, libc5, glibc) de getcwd() alloue le tampon dynamiquement, en utilisant malloc(), si buf est NULL lors de l'appel. Alors, le tampon alloué a la longueur size à moins que size soit égal à zéro, dans ce cas buf a 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écuriré, on déconseille l'utilisation de getwd().  

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

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 26 octobre 1996 et révisée le 14 août 2006.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 getcwd Â». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
NOTES
CONFORMITÉ
VOIR AUSSI
TRADUCTION

This document was created by man2html using the manual pages.
Time: 17:36:45 GMT, October 23, 2013

SVENSKA - SVENSKA - SVENSKA - ja - pl - SVENSKA