glob

GLOB(3)                    Linux-Programmierhandbuch                   GLOB(3)



BEZEICHNUNG
       glob, globfree - findet Pfadnamen, die einem Muster genügen; gibt von
       glob() belegten Speicher frei

ÃBERSICHT
       #include <glob.h>

       int glob(const char *pattern, int flags,
                int (*errfunc) (const char *epath, int eerrno),
                glob_t *pglob);
       void globfree(glob_t *pglob);

BESCHREIBUNG
       Die Funktion glob() sucht alle Pfadnamen, die nach den von der Shell
       verwendeten Regeln dem Muster pattern genügen und gibt sie zurück
       (siehe auch glob(7)). Tilde-Erweiterungen und Parametersubstitutionen
       werden nicht durchgeführt.

       Die Funktion globfree() gibt den dynamisch allozierten Speicher wieder
       frei, der noch von einem früheren Aufruf von glob() belegt wird.

       Die Ergebnisse eines Aufrufes von glob() werden in der Struktur
       gespeichert, auf die pglob zeigt. Sie ist vom Typ glob_t (deklariert in
       <glob.h>) und enthält die folgenden von POSIX.2 definierten Elemente
       (als Erweiterung können zusätzliche Elemente vorhanden sein):

           typedef struct {
               size_t   gl_pathc;  /* Anzahl der bisher gefundenen Dateinamen */
               char   **gl_pathv;  /* Liste passender Pfadnamen */
               size_t   gl_offs;   /* in gl_pathv zu reservierendende "Slots" */
           } glob_t;

       Die Ergebnisse werden in dynamisch alloziertem Speicher abgelegt.

       Das Argument flags besteht aus einer bitweisen ODER-Verknüpfung von
       null oder mehreren der folgenden symbolischen Konstanten, die das
       Verhalten von glob() bestimmen:

       GLOB_ERR
              Funktion bei Lesefehler beenden (weil z. B. für ein Verzeichnis
              das Lesen nicht gestattet ist). StandardmäÃig versucht glob(),
              trotz Fehlern weiterzumachen und alle Verzeichnisse zu lesen,
              die ihr möglich sind.

       GLOB_MARK
              An jeden gefundenen Pfad einen Schrägstrich an, wenn dieser
              einemVerzeichnis entspricht.

       GLOB_NOSORT
              Die zurückgegebenen Pfadnamen nicht sortieren. Der einzige
              Grund dafür ist das Einsparen von Zeit für die Verarbeitung.
              StandardmäÃig werden die zurückgegebenen Pfadnamen sortiert.

       GLOB_DOOFFS
              pglob->gl_offs Einträge am Anfang der String-Liste in
              pglob->pathv reservieren. Die reservierten Einträge enthalten
              Null-Zeiger.

       GLOB_NOCHECK
              Falls kein Muster passt, das ursprüngliche Muster zurückgeben.
              StandardmäÃig gibt glob() GLOB_NOMATCH zurück, wenn es keine
              Fundstellen gibt.

       GLOB_APPEND
              Die Ergebnisse dieses Aufrufs an den Ergebnisvektor eines
              früheren Aufrufs von glob() anhängen. Setzen Sie diesen
              Schalter nicht beim ersten Aufruf von glob().

       GLOB_NOESCAPE
              Den linksseitigen Schrägstrich (»\«) nicht als Escape-Zeichen
              zulassen. Normalerweise wird dieses Zeichen verwendet, um die
              folgenden Zeichen zu maskieren und somit einen Mechanismus zum
              Ausschalten der besonderen Bedeutung von Metazeichen zu bieten.

       flags kann auch einen der folgenden, nicht von POSIX.2 definierten
       Werte enthalten. Diese GNU-Erweiterungen sind:

       GLOB_PERIOD
              Den Abgleich eines führenden Punktes mit Metazeichen zulassen.
              StandardmäÃig können Metazeichen nicht mit einem führenden
              Punkte abgeglichen werden.

       GLOB_ALTDIRFUNC
              Die alternativen Funktionen pglob->gl_closedir,
              pglob->gl_readdir, pglob->gl_opendir, pglob->gl_lstat und
              pglob->gl_stat anstelle der normalen Bibliotheksfunktionen für
              den Zugriff auf das Dateisystem verwenden.for file system access
              instead of the normal library functions.

       GLOB_BRACE
              Ersetzen von Klammerausdrücken der Form {a,b} im csh(1)-Stil.
              Klammerausdrücke können verschachtelt werden. So liefert zum
              Beispiel die Angabe des Musters »{foo/{,cat, dog}, bar}« die
              gleichen Ergebnisse wie vier separate Aufrufe von glob() mit den
              Zeichenketten »foo/«, »foo/cat«, »foo/dog« und »bar«.

       GLOB_NOMAGIC
              Falls das Muster keine Metazeichen enthält, sollte es als das
              einzige Ergebnis zurückgegeben werden, auch wenn keine Datei
              mit diesem Namen existiert.

       GLOB_TILDE
              Tilden ersetzen. Falls eine Tilde (» «) das einzige Zeichen im
              Muster ist oder einer Tilde als erstes Zeichen sofort ein
              Schrägstrich (»«) folgt, wird die Tilde durch das
              Home-Verzeichnis des Aufrufenden ersetzt. Falls der einleitenden
              Tilde ein Benutzername folgt (z. B. ~/andrea/bin),  werden Tilde
              und Benutzername durch das Home-Verzeichnis des Benutzers
              ersetzt. Falls der Benutzername ungültig ist oder das
              Home-Verzeichnis nicht bestimmt werden kann, wird keine
              Substitution durchgeführt.

       GLOB_TILDE_CHECK
              Dieser Schalter bewirkt ein Verhalten ähnlich dem von
              GLOB_TILDE. Der Unterschied ist, dass bei einem ungültigen
              Benutzernamen oder bei nicht ermittelbarem Home-Verzeichnis
              nicht das Muster selbst als Name verwendet wird, sondern glob()
              GLOB_NOMATCH zurückgibt, um einen Fehler anzuzeigen.

       GLOB_ONLYDIR
              Dies ist ein Hinweis für glob(), dass der Aufrufende nur an
              Verzeichnissen interessiert ist, die dem Muster entsprechen.
              Falls die Implementierung Informationen zum Dateityp leicht
              ermitteln kann, werden Dateien, die keine Verzeichnisse sind,
              nicht an den Aufrufenden zurückgegeben. Allerdings muss der
              Aufrufende dennoch prüfen, ob die zurückgegebenen Dateien
              Verzeichnisse sind. (Der Zweck dieses Schalters ist lediglich
              eine Leistungsoptimierung, wenn der Aufrufende nur an
              Verzeichnissen interessiert ist.)

       Falls errfunc nicht NULL ist, wird sie mit den Parametern epath und
       eerrno aufgerufen, wenn ein Fehler auftritt. epath ist der Zeiger auf
       den Pfad, bei dem der Fehler passierte, eerrnoder Wert von errno, wie
       er von opendir()3, readdir(3) bzw. stat(2) gesetzt wurde. Falls errfunc
       einen Wert ungleich null zurückgibt oder wenn GLOB_ERR gesetzt ist,
       kehrt glob() nach dem Aufruf von errfunc in das aufrufende Programm
       zurück.

       Nach erfolgreicher Ausführung enthält pglob->gl_pathc die Anzahl der
       gefundenen Pfadnamen und pglob->gl_pathv ist ein Zeiger auf die Liste
       der gefundenen Pfadnamen. Die Liste der Zeiger wird mit einem
       Null-Zeiger abgeschlossen.

       Es ist möglich, glob() mehrfach aufzurufen. In diesem Fall muss
       GLOB_APPEND in flags beim zweiten und jedem weiteren Aufruf gesetzt
       werden.

       Als eine GNU-Erweiterung wird pglob->gl_flags auf die angegebenen
       Schalter, logisch mit GLOB_MAGCHAR oder-verknüpft, gesetzt, falls
       Metazeichen gefunden wurden.

RÃCKGABEWERT
       Nach erfolgreicher Ausführung gibt glob() null zurück. Andere
       mögliche Werte sind:

       GLOB_NOSPACE
              Speicher aufgebraucht

       GLOB_ABORTED
              für einen Lesefehler und

       GLOB_NOMATCH
              falls keine Pfade gefunden wurden.

ATTRIBUTE
       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt
       verwandten Ausdrücke.

       ┌──────────────┬────────────────────────┬──────────────────────────┐
       │Schnittstelle Attribut               Wert                     │
       ├──────────────┼────────────────────────┼──────────────────────────┤
       │glob()        │ Multithread-Fähigkeit │ MT-Unsafe race:utent env │
       │              │                        │ sig:ALRM timer locale    │
       ├──────────────┼────────────────────────┼──────────────────────────┤
       │globfree()    │ Multithread-Fähigkeit │ MT-Safe                  │
       └──────────────┴────────────────────────┴──────────────────────────┘
       In der obigen Tabelle bedeutet utent in race:utent, dass, falls eine
       der Funktionen setutent(3), getutent(3) oder endutent(3) in
       verschiedenen Threads eines Programms parallel verwandt werden,
       konkurrierende Zugriffe auf Daten (»data races«) auftreten könnten.
       glob() ruft diese Funktionen auf, daher werden Benutzer mit
       »race:utent« daran erinnert.

KONFORM ZU
       POSIX.1-2001, POSIX.1-2008, POSIX.2.

ANMERKUNGEN
       Die Strukturelemente gl_pathc und gl_offs werden in der Glibc 2.1 als
       size_t deklariert, wie sie es gemäà POSIX.2 sein sollten. In Glibc 2.0
       sind sie aber als int deklariert.

FEHLER
       Die Funktion glob() kann bei Fehlern der zugrunde liegenden
       Funktionsaufrufe wie malloc(3) oder opendir(3) fehlschlagen. Diese
       speichern ihren Fehlercode in errno.

BEISPIEL
       Ein Anwendungsbeispiel ist der folgende Code, der die Eingabe von

           ls -l *.c ../*.c

       in der Shell simuliert:

           glob_t globbuf;

           globbuf.gl_offs = 2;
           glob("*.c", GLOB_DOOFFS, NULL, &globbuf);
           glob("../*.c", GLOB_DOOFFS | GLOB_APPEND, NULL, &globbuf);
           globbuf.gl_pathv[0] = "ls";
           globbuf.gl_pathv[1] = "-l";
           execvp("ls", &globbuf.gl_pathv[0]);

SIEHE AUCH
       ls(1), sh(1), stat(2), exec(3), fnmatch(3), malloc(3), opendir(3),
       readdir(3), wordexp(3), glob(7)

KOLOPHON
       Diese Seite ist Teil der Veröffentlichung 5.03 des Projekts
       Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
       Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
       finden sich unter https://www.kernel.org/doc/man-pages/.


ÃBERSETZUNG
       Die deutsche Ãbersetzung dieser Handbuchseite wurde von Martin Schulze
       <joey@infodrom.org>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>,
       Mario Blättermann <mario.blaettermann@gmail.com> und Dr. Tobias
       Quathamer <toddy@debian.org> erstellt.

       Diese Ãbersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Ãbersetzung dieser Handbuchseite finden,
       schicken Sie bitte eine E-Mail an <debian-l10n-
       german@lists.debian.org>.



GNU                              6. März 2019                         GLOB(3)