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

BEZEICHNUNG

       getcwd, getwd, get_current_dir_name - das aktuelle Verzeichnis abfragen

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <unistd.h>

       char *getcwd(char Puffer[.Größe], size_t Größe);
       char *get_current_dir_name(void);

       [[veraltet]] char *getwd(char Puffer[PATH_MAX]);

   Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

       get_current_dir_name():
           _GNU_SOURCE

       getwd():
           Seit Glibc 2.12:
               (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
                   || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
                   || /* Glibc <= 2.19: */ _BSD_SOURCE
           Vor Glibc 2.12:
               _BSD_SOURCE || _XOPEN_SOURCE >= 500

BESCHREIBUNG

       Diese  Funktionen  geben  eine Zeichenkette mit abschließender Null zurück, die einen absoluten Pfadnamen
       enthält, der dem aktuellen Arbeitsverzeichnis des aufrufenden Prozesses entspricht. Der Pfadname wird als
       das Funktionsergebnis und, falls vorhanden, über das Argument Puffer zurückgegeben.

       Die Funktion getcwd() kopiert den absoluten Pfadnamen des aktuellen Arbeitsverzeichnisses  in  das  Feld,
       auf das Puffer zeigt und das Größe Byte lang ist.

       Falls  die  Länge  des absoluten Pfadnamens des Arbeitsverzeichnisses, einschließlich abschließender Null
       Größe Byte überschreitet, wird NULL zurückgegeben und errno auf ERANGE  gesetzt.  Eine  Anwendung  sollte
       prüfen, ob dieser Fehler auftrat und falls nötig einen größeren Puffer reservieren.

       Als  eine Erweiterung des POSIX.1-2001-Standards reserviert getcwd() der Linux-Glibc den Puffer dynamisch
       durch Verwendung von malloc(3), wenn Puffer NULL ist. In diesem Fall hat der reservierte Puffer die Länge
       Größe, sofern Größe nicht Null ist, wenn die für Puffer  nötige  Größe  reserviert  ist.  Der  Aufrufende
       sollte den zurückgegebenen Puffer mit free(3) freigeben.

       get_current_dir_name()  wird  mit  malloc(3)  ein  Feld reservieren, das groß genug ist, um den absoluten
       Pfadnamen des aktuellen Arbeitsverzeichnisses aufzunehmen. Wenn die Umgebungsvariable PWD gesetzt ist und
       ihr Wert stimmt, dann wird dieser Wert zurückgegeben. Der Aufrufende sollte  den  zurückgegebenen  Puffer
       mit free(3) freigeben.

       getwd()  reserviert keinen Speicher mit malloc(3). Das Argument Puffer sollte ein Zeiger auf ein Feld mit
       einer Mindestlänge von PATH_MAX Byte sein.  Falls  die  Länge  des  absoluten  Pfadnamens  des  aktuellen
       Arbeitsverzeichnisses  einschließlich des abschließenden Nullbytes PATH_MAX Byte überschreitet, wird NULL
       zurückgegeben und errno auf ENAMETOOLONG gesetzt. (Beachten Sie, dass PATH_MAX auf einigen  Systemen  zur
       Kompilierzeit  möglicherweise  keine  Konstante  ist;  außerdem hängt ihr Wert vom Dateisystem ab – siehe
       pathconf(3).) Aus Gründen der Portierbarkeit und Sicherheit ist die Benutzung von getwd() missbilligt.

RÜCKGABEWERT

       Bei Erfolg geben diese Funktionen einen Zeiger auf  eine  Zeichenkette  zurück,  die  den  Pfadnamen  des
       aktuellen  Arbeitsverzeichnisses  enthält. Im Fall von getcwd() und getwd() ist dies der gleiche Wert wie
       Puffer.

       Bei einem Fehlschlag geben diese Funktionen NULL zurück und errno wird so gesetzt,  dass  es  den  Fehler
       anzeigt. Der Inhalt des Feldes, auf den Puffer zeigt, ist bei einem Fehler nicht definiert.

FEHLER

       EACCES Lese- oder Suchberechtigung für einen Bestandteil des Dateinamens wurde verweigert.

       EFAULT Puffer zeigt auf eine falsche Adresse.

       EINVAL Das Argument Größe ist Null und Puffer ist kein Nullzeiger.

       EINVAL getwd(): Puffer ist NULL.

       ENAMETOOLONG
              getwd():  Die  Größe  des  absoluten Pfadnamens mit abschließendem Nullbyte überschreitet PATH_MAX
              Byte.

       ENOENT Der Link auf das aktuelle Arbeitsverzeichnis wurde gelöst.

       ENOMEM Speicher aufgebraucht.

       ERANGE Das  Argument  Größe  ist  kleiner  als  die  Länge  des  absoluten   Pfadnamens   des   aktuellen
              Arbeitsverzeichnisses  einschließlich  abschließendem  Nullbyte.  Sie  müssen  ein  größeres  Feld
              reservieren und es erneut versuchen.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌───────────────────────────────────────────────────────────────┬───────────────────────┬───────────────┐
       │ SchnittstelleAttributWert          │
       ├───────────────────────────────────────────────────────────────┼───────────────────────┼───────────────┤
       │ getcwd(), getwd()                                             │ Multithread-Fähigkeit │ MT-Sicher     │
       ├───────────────────────────────────────────────────────────────┼───────────────────────┼───────────────┤
       │ get_current_dir_name()                                        │ Multithread-Fähigkeit │ MT-Sicher env │
       └───────────────────────────────────────────────────────────────┴───────────────────────┴───────────────┘

VERSIONEN

       Das Verhalten von getcwd() unter POSIX.1-2001 ist nicht spezifiziert, wenn Puffer NULL ist.

       POSIX.1-2001 definiert keinerlei Fehler für getwd().

VERSIONEN

   Unterschiede C-Bibliothek/Kernel
       Unter Linux stellt der Kernel einen Systemaufruf getcwd() bereit, den die in dieser  Seite  beschriebenen
       Funktionen   falls  möglich  benutzen.  Der  Systemaufruf  akzeptiert  die  gleichen  Argumente  wie  die
       Bibliotheksfunktion  des  gleichen  Namens,  aber  sie  ist  darauf  begrenzt,  maximal   PATH_MAX   Byte
       zurückzuliefern.  (Vor  Linux  3.12  war  die  Begrenzung  der Größe des zurückgelieferten Pfadnamens die
       Systemseitengröße. Auf vielen Architekturen sind sowohl PATH_MAX als  auch  die  Systemseitengröße  beide
       4096  Byte, aber einige Architekturen haben eine größere Seitengröße.) Falls die Länge des Pfadnamens des
       aktuellen Arbeitsverzeichnisses dies Begrenzung überschreitet, dann  schlägt  der  Systemaufruf  mit  dem
       Fehler  ENAMETOOLONG fehl. In diesem Fall fällt die Bibliotheksfunktion auf eine (langsamere) alternative
       Implementierung zurück, die den kompletten Pfadnamen zurückliefert.

       Folgend einer Änderung in Linux  2.6.36  wird  dem  durch  den  Systemaufruf  getcwd()  zurückgelieferten
       Pfadnamen  die Zeichenkette »(unreachable)« vorangestellt, falls das aktuelle Verzeichnis nicht unterhalb
       des Wurzelverzeichnisses des aktuellen Prozesses ist (z.B. da der Prozess auf eine neue Dateisystemwurzel
       mittels chroot(2) gesetzt wurde, ohne sein aktuelles Verzeichnis in die neue Wurzel zu wechseln).  Dieses
       Verhalten  kann  auch  durch  einen  nichtprivilegierten  Benutzer hervorgerufen werden, der das aktuelle
       Verzeichnis  in  einen  anderen  Einhängenamensraum  gewechselt  hat.  Beim  Umgang  mit  Pfadnamen   von
       nichtvertrauenswürdigen  Quellen  sollten  Aufrufende  von  in  dieser  Seite beschriebenen Funktionen in
       Betracht ziehen, zu überprüfen, ob der zurückgelieferte Pfadname mit »/« oder  mit  »(«  anfängt,  um  zu
       vermeiden, dass ein nicht erreichbarer Pfad als relativer Pfadname misinterpretiert wird.

STANDARDS

       getcwd()
              POSIX.1-2008.

       get_current_dir_name()
              GNU.

       getwd()
              Keine.

GESCHICHTE

       getcwd()
              POSIX.1-2001.

       getwd()
              POSIX.1-2001,   aber  als  VERALTET  markiert.  Wurde  in  POSIX.1-2008  entfernt.  Verwenden  Sie
              stattdessen getcwd().

       Unter Linux nutzen diese Funktionen den  Systemaufruf  getcwd()  (verfügbar  seit  2.1.92).  Auf  älteren
       Systemen   würden   sie   /proc/self/cwd   abfragen.   Falls   sowohl  der  Systemaufruf,  als  auch  das
       »proc«-Dateisystem fehlen, wird eine allgemeine Implementierung aufgerufen. Nur  in  diesem  Fall  können
       diese Systemaufrufe unter Linux mit EACCES fehlschlagen.

ANMERKUNGEN

       Diese  Funktionen  werden  oft  benutzt,  um  den  Ort  des aktuellen Arbeitsverzeichnisses zum Zweck der
       späteren Rückkehr zu speichern. Das aktuelle  Verzeichnis  ».«  zu  öffnen  und  fchdir(2)  zur  Rückkehr
       aufzurufen  ist  normalerweise  schneller  und  eine  zuverlässigere  Alternative, wenn ausreichend viele
       Dateideskriptoren zur Verfügung stehen, besonders auf anderen Plattformen als Linux.

FEHLER

       Seit der  Änderung  in  Linux  2.6.36,  die  »(unreachable)«  in  den  oben  beschriebenen  Gegebenheiten
       hinzufügte,  ist  Glibcs  Implementierung  von  getcwd()  nicht  mehr mit POSIX konform und liefert einen
       relativen Pfadnamen zurück, wenn der API-Vertrag einen absoluten Pfadnamen verlangt. Ab  Glibc  2.27  ist
       dies  korrigiert:  ein  Aufruf  von getcwd() von solch einem Pfadnamen liefert jetzt einen Fehlschlag mit
       ENOENT.

SIEHE AUCH

       pwd(1), chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org>,  Chris  Leick
       <c.leick@vollbio.de>,    Mario    Blättermann   <mario.blaettermann@gmail.com>   und   Helge   Kreutzmann
       <debian@helgefjell.de> 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                              2. Mai 2024                                         getcwd(3)