Provided by: manpages-de-dev_4.21.0-2_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-Safe     │
       ├───────────────────────────────────────────────────┼───────────────────────┼─────────────┤
       │get_current_dir_name()                             │ Multithread-Fähigkeit │ MT-Safe env │
       └───────────────────────────────────────────────────┴───────────────────────┴─────────────┘

STANDARDS

       getcwd() ist konform zu POSIX.1-2001. Beachten Sie jedoch, dass das Verhalten von getcwd()
       unter POSIX.1-2001 nicht spezifiziert ist, wenn Puffer NULL ist.

       getwd()  ist  in POSIX.1-2001 vorhanden, aber als VERALTET markiert. POSIX.1-2008 entfernt
       die Spezifikation von getwd(). Benutzen Sie stattdessen getcwd().  POSIX.1-2001  definiert
       keine Fehler für getwd().

       get_current_dir_name() ist eine GNU-Erweiterung.

ANMERKUNGEN

       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.

       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.

   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.

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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.