Votre IP: 38.107.179.240 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 27-03-2008 20:23:44

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]


DIRNAME

 

Index

  1. NOM
  2. SYNOPSIS
  3. DESCRIPTION
  4. EXEMPLE
  5. VALEUR RENVOYÉE
  6. NOTES
  7. BOGUES
  8. CONFORMITÉ À
  9. VOIR AUSSI
  10. TRADUCTION

 

NOMIndex

basename, dirname - Analyse des composants d'un chemin d'accès  

SYNOPSISIndex

#include <libgen.h>

char *dirname(char *path);

char *basename(char *path);
 

DESCRIPTIONIndex

Attention : il y a deux fonctions basename différentes; voyez ci-dessous.
Les fonctions basename() et dirname() décomposent une chaîne terminée par un caractère nul, représentant un chemin d'accès en ses composants répertoire et nom de fichier. En général, dirname() renvoie la chaîne s'étendant jusqu'au dernier « / », sans l'inclure, et basename() renvoie la partie se trouvant après le dernier « / ». Les caractères « / » en fin de chaîne ne font pas partie du chemin.
Si path ne contient pas de barre oblique, dirname() renvoie la chaîne « . » et basename() renvoie une copie de la chaîne path. Si path est représenté par la chaîne « / », alors dirname() et basename() renvoient tout deux la chaîne « / ». Si path est un pointeur NULL, ou pointe vers une chaîne vide, alors dirname() et basename() renvoient tout deux la chaîne « . ».
En mettant bout à bout la chaîne renvoyée par dirname(), un « / », et la chaîne renvoyée par basename(), on obtient un chemin d'accès complet.
dirname() et basename() peuvent tous deux modifier le contenu de la chaîne path. Il faut donc leur transmettre des copies de la chaîne. De plus, dirname() et basename() peuvent renvoyer des pointeurs sur des zones mémoires allouées statiquement, qui peuvent être écrasées par des appels consécutifs.
La liste suivante d'exemple (prise dans SUSv2) montre les chaînes renvoyées par dirname() et basename() pour différents chemins d'accès :
path            dirname         basename
"/usr/lib"      "/usr"          "lib"
"/usr/"         "/"             "usr"
"usr"           "."             "usr"
"/"             "/"             "/"
"."             "."             "."
".."            "."             ".."
 

EXEMPLEIndex

char *dirc, *basec, *bname, *dname;
char *path = "/etc/passwd";

dirc = strdup(path);
basec = strdup(path);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s
", dname, bname);
 

VALEUR RENVOYÉEIndex

Les fonctions dirname() et basename() renvoient des pointeurs sur des chaînes terminées par un caractère nul.  

NOTESIndex

Il y a deux versions différentes de basename() ; la version POSIX décrite précédemment, et la version GNU que l'on utilise avec

#define _GNU_SOURCE

#include <string.h>
La version GNU ne modifie jamais son argument et renvoie une chaîne vide lorsque path finit par une barre oblique « / » et en particulier aussi lorsqu'il vaut « / ». Il n'y a pas de version GNU de dirname().
Avec la glibc, on utilise la version POSIX de basename() lorsque <libgen.h> est inclus, et la version GNU autrement.  

BOGUESIndex

Dans l'implémentation de la glibc des versions POSIX de ces fonctions, celles-ci modifient leur argument et provoquent une erreur de segmentation lorsqu'elles sont invoquées avec une chaîne statique comme « /usr/ ». Avant la glibc 2.2.1, la fonction dirname() ne géraient pas correctement les chemins se terminant par un caractère « / » et déclenchaient une erreur de segmentation en recevant un pointeur NULL.  

CONFORMITÉ ÀIndex

POSIX.1-2001  

VOIR AUSSIIndex

basename(1), dirname(1)  

TRADUCTIONIndex

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


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS