Provided by: manpages-fr-dev_4.21.0-2_all 

NOM
glob, globfree - Rechercher un chemin d'accès correspondant à un motif
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <glob.h>
int glob(const char *restrict pattern, int flags,
int (*errfunc)(const char *epath, int eerrno),
glob_t *restrict pglob);
void globfree(glob_t *pglob);
DESCRIPTION
La fonction glob() recherche tous les chemins d'accès correspondant au motif pattern en utilisant les
règles du shell (consultez glob(7)). Aucun remplacement de tilde ou substitution de paramètre n'est
effectué. Si vous avez besoin de ces fonctionnalités, utilisez wordexp(3).
La fonction globfree() libère la mémoire allouée dynamiquement lors d'un appel précédent à glob().
Les résultats d'un appel à glob() sont stockés dans une structure pointée par pglob. Cette structure est
de type glob_t (défini dans <glob.h>) et inclut les éléments définis par POSIX.2 (il peut y en avoir plus
sous forme d'extension GNU) :
typedef struct {
size_t gl_pathc; /* Nombre de chemins correspondant */
char **gl_pathv; /* Liste des chemins correspondant */
size_t gl_offs; /* Entrées à réserver dans gl_pathv. */
} glob_t;
Les résultats sont sauvés dans une zone allouée dynamiquement.
Le paramètre flags est constitué d'un OU binaire « | » entre zéro ou plus des constantes symboliques
suivantes, modifiant le comportement de glob() :
GLOB_ERR
Terminer dès qu'une erreur se produit (par exemple, un répertoire non lisible). Par défaut, glob()
tente, malgré les erreurs, de lire tous les répertoires qu'il peut.
GLOB_MARK
Ajoute une barre oblique finale à chaque nom correspondant à un répertoire.
GLOB_NOSORT
Ne pas trier les chemins d'accès renvoyés. La seule raison pour faire cela est d'économiser du
temps de traitement. Par défaut, les chemins d'accès renvoyés sont triés.
GLOB_DOOFFS
Réserve pglob->gl_offs points d'entrée au début de la liste de chaînes dans pglob->pathv. Les
points d'entrée réservés contiennent des pointeurs NULL.
GLOB_NOCHECK
Si aucun motif ne correspond, renvoyer le motif original. Par défaut, glob() renvoie GLOB_NOMATCH
s'il n'y a pas de correspondance.
GLOB_APPEND
Ajoute les résultats de cet appel au tableau de résultats renvoyé par un appel précédent à glob().
Ne pas indiquer cet attribut lors du premier appel de glob().
GLOB_NOESCAPE
Ne pas permettre l'utilisation de barre oblique inverse (« \ ») pour désactiver les caractères
d'échappement. Normalement, une barre oblique inverse peut être utilisée pour échapper le
caractère qui le suit, fournissant un mécanisme de désactivation du sens particulier des
méta-caractères.
flags peut également utiliser les constantes suivantes, qui sont des extensions GNU, non définies dans
POSIX.2 :
GLOB_PERIOD
Permettre à un point en tête de chemin de correspondre à un méta-caractère. Par défaut, les
méta-caractères ne peuvent pas correspondre à un point en tête de chemin.
GLOB_ALTDIRFUNC
Utiliser les fonctions alternatives pglob->gl_closedir, pglob->gl_readdir, pglob->gl_opendir,
pglob->gl_lstat et pglob->gl_stat pour l'accès au système de fichiers au lieu des fonctions
normales de bibliothèque.
GLOB_BRACE
Développer dans le style csh(1) les expressions de type {a,b}. Les expressions entre accolades
peuvent être imbriquées. Ainsi, par exemple, spécifier le motif « {foo/{,cat,dog},bar} »
retournera le même résultat que quatre appels à glob() séparés utilisant les chaînes : « foo/ »,
« foo/cat », « foo/dog », et « bar ».
GLOB_NOMAGIC
Si le motif renvoyé ne contient pas de méta-caractères, il sera retourné comme seul mot
correspondant, même s'il n'existe pas de fichier avec ce nom.
GLOB_TILDE
Prendre en charge l'expansion du tilde. Si un tilde (« ~ ») est le seul caractère du motif, ou si
un tilde en tête est suivi par une barre oblique (« / »), le répertoire personnel de l'appelant
sera substitué au tilde. Si un tilde en tête est suivi par un nom d'utilisateur (par exemple,
« ~alain/bin », le tilde et le nom d'utilisateur sont substitués par le répertoire personnel de
cet utilisateur. Si le nom d'utilisateur n'est pas valide ou si le répertoire personnel ne peut
pas être déterminé, la substitution n'est pas effectuée.
GLOB_TILDE_CHECK
Fournit un comportement similaire à celui de GLOB_TILDE. La différence est que si le nom
d'utilisateur n'est pas valable ou si le répertoire personnel ne peut pas être déterminé, plutôt
que d'utiliser le motif lui-même comme nom, glob() renvoie GLOB_NOMATCH pour indiquer l'erreur.
GLOB_ONLYDIR
C'est une indication pour glob() indiquant que l'appelant ne s'intéresse qu'aux répertoires
correspondant au motif. Si l'implémentation peut facilement déterminer le type de fichier, les
fichiers qui ne sont pas des répertoires ne sont pas renvoyés à l'appelant. Toutefois, l'appelant
doit toujours vérifier que les fichiers renvoyés sont des répertoires (le but de cet attribut est
simplement d'optimiser les performances lorsque l'appelant ne s'intéresse qu'aux répertoires).
Si errfunc n'est pas NULL, elle sera appelée en cas d'erreur, avec les arguments epath un pointeur sur le
chemin qui a échoué, et eerrno la valeur de errno telle qu'elle a été renvoyée par un appel à opendir(3),
readdir(3) ou stat(2). Si errfunc renvoie une valeur non nulle, ou si GLOB_ERR est positionné, glob() se
terminera après l'appel de errfunc.
Si glob() réussit complètement, pglob->gl_pathc contient le nombre de chemins d'accès correspondants et
pglob->gl_pathv contient un pointeur sur une liste des chemins. Le premier pointeur après le dernier
chemin vaut NULL.
Il est possible d'appeler glob() plusieurs fois. Dans ce cas, l'attribut GLOB_APPEND doit être indiqué
dans flags durant le second appel et les suivants.
En tant qu'extension GNU, le champ pglob->gl_flags contient les attributs indiqués liés par un OU avec
GLOB_MAGCHAR si un méta-caractère a été trouvé.
VALEUR RENVOYÉE
S'il réussit complètement glob() renvoie zéro. Les autres valeurs renvoyées peuvent être :
GLOB_NOSPACE
pas assez de mémoire,
GLOB_ABORTED
erreur de lecture, et
GLOB_NOMATCH
aucune correspondance trouvée.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
┌────────────┬──────────────────────┬───────────────────────────────────────────────────────────────────┐
│ Interface │ Attribut │ Valeur │
├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
│ glob() │ Sécurité des threads │ MT-Unsafe race:utent env sig:ALRM timer locale │
├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
│ globfree() │ Sécurité des threads │ MT-Safe │
└────────────┴──────────────────────┴───────────────────────────────────────────────────────────────────┘
Dans le tableau ci-dessus, utent dans race:utent signifie que si des fonctions parmi setutent(3), ge‐
tutent(3) ou endutent(3) sont utilisées en parallèle dans différents threads d'un programme, des situa‐
tions de compétition entre données pourraient apparaître. glob() appelle ces fonctions, nous utilisons
donc race:utent pour le rappeler aux utilisateurs.
STANDARDS
POSIX.1-2001, POSIX.1-2008, POSIX.2.
NOTES
Les éléments de la structure gl_pathc et gl_offs sont déclarés comme des size_t dans glibc 2.1, comme
préconisé dans POSIX.2, mais sont déclarés sous forme de int dans glibc 2.0.
BOGUES
La fonction glob() peut échouer en cas d'erreur dans un appel de fonction sous-jacent, comme malloc(3) ou
opendir(3). Le code d'erreur sera alors stocké dans errno.
EXEMPLES
L'exemple d'utilisation suivant simule la frappe de
ls -l *.c ../*.c
dans un shell :
glob_t globbuf;
globbuf.gl_offs = 2;
glob("*.c", GLOB_DOOFS, NULL, &globbuf);
glob("../*.c", GLOB_DOOFS | GLOB_APPEND, NULL, &globbuf);
globbuf.gl_pathv[0] = "ls";
globbuf.gl_pathv[1] = "-l";
execvp("ls", &globbuf.gl_pathv[0]);
VOIR AUSSI
ls(1), sh(1), stat(2), exec(3), fnmatch(3), malloc(3), opendir(3), readdir(3), wordexp(3), glob(7)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvi‐
gnaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fe‐
vrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@de‐
bian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centra‐
liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Frédéric Hantrais <fhan‐
trais@gmail.com>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à de‐
bian-l10n-french@lists.debian.org.
Pages du manuel de Linux 6.03 5 février 2023 glob(3)