Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

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

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <glob.h>

       int glob(const char *restrict Muster, int Schalter,
                int (*Fehlerfunk)(const char *fPfad, int Fehlernum),
                glob_t *restrict pglob);
       void globfree(glob_t *pglob);

BESCHREIBUNG

       Die  Funktion  glob()  sucht  alle  Pfadnamen,  die  nach den von der Shell verwendeten Regeln dem Muster
       genügen und gibt sie zurück (siehe auch glob(7)). Tilde-Erweiterungen und Parametersubstitutionen  werden
       nicht durchgeführt, falls sie das möchten, müssen Sie wordexp(3) verwenden.

       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  Schalter 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 Nullzeiger.

       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.

       Schalter  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  (»\[u00AB])  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  Fehlerfunk  nicht  NULL  ist, wird sie mit den Parametern fPfad und Fehlernum aufgerufen, wenn ein
       Fehler auftritt. fPfad ist der Zeiger auf den Pfad, bei dem der Fehler passierte, Fehlernum der Wert  von
       errno, wie er von opendir(3), readdir(3) bzw. stat(2) gesetzt wurde. Falls Fehlerfunk einen Wert ungleich
       null  zurückgibt  oder  wenn  GLOB_ERR  gesetzt  ist,  kehrt glob() nach dem Aufruf von Fehlerfunk 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 Nullzeiger abgeschlossen.

       Es ist möglich, glob() mehrfach aufzurufen. In diesem Fall muss GLOB_APPEND in Schalter 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.
       ┌───────────────┬───────────────────────┬───────────────────────────────────────────────────────────────┐
       │ SchnittstelleAttributWert                                                          │
       ├───────────────┼───────────────────────┼───────────────────────────────────────────────────────────────┤
       │ glob()        │ Multithread-Fähigkeit │ MT-Unsicher race:utent env sig:ALRM timer locale              │
       ├───────────────┼───────────────────────┼───────────────────────────────────────────────────────────────┤
       │ globfree()    │ Multithread-Fähigkeit │ MT-Sicher                                                     │
       └───────────────┴───────────────────────┴───────────────────────────────────────────────────────────────┘

       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.

STANDARDS

       POSIX.1-2008.

GESCHICHTE

       POSIX.1-2001, 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.

BEISPIELE

       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)

Ü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 die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                             15. Juni 2024                                          glob(3)