Provided by: manpages-de-dev_2.5-1_all bug

BEZEICHNUNG

       getcwd, getwd, get_current_dir_name - das aktuelle Verzeichnis abfragen

ÜBERSICHT

       #include <unistd.h>

       char *getcwd(char *Puffer, size_t Größe);

       char *getwd(char *Puffer);

       char *get_current_dir_name(void);

   Mit Glibc erforderliche 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 seit 2.19: */ _DEFAULT_SOURCE
                   || /* Glibc-Versionen <= 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.

       Falls das aktuelle Verzeichnis nicht  unterhalb  des  Wurzelverzeichnisses  des  aktuellen
       Prozesses  ist (z.B. da der Prozess eine neue Dateisystemwurzel mit chroot(2) gesetzt hat,
       ohne sein aktuelles Verzeichnis in die neue Wurzel zu ändern), dann wird seit  2.6.36  dem
       zurückgelieferten   Pfad  die  Zeichenkette  »(unreachable)«  vorangestellt.  Ein  solches
       Verhalten kann auch durch unprivilegierte Benutzer, die das aktuelle Verzeichnis in  einen
       anderen  mount-Namensraum  ändern,  hervorgerufen  werden.  Beim  Umgang  mit  Pfaden  von
       unvertrauenswürdigen Quellen sollten Aufrufende dieser Funktion überlegen, zu  prüfen,  ob
       der  zurückgelieferte  Pfad  mit »/« oder mit »(« anfängt, um zu vermeiden, dass ein nicht
       erreichbarer Pfad als relativer Pfad misinterpretiert wird.

       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
       Null-Bytes 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 Null-Zeiger.

       EINVAL getwd(): Puffer ist NULL.

       ENAMETOOLONG
              getwd(): Die Größe des absoluten Pfadnamens mit abschließender  Null  ü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  Null-Byte.  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 │
       └───────────────────────┴───────────────────────┴─────────────┘

KONFORM ZU

       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 ist die Funktion getcwd() ein Systemaufruf (seit 2.1.92). Auf älteren Systemen
       würde   es   /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.

SIEHE AUCH

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

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.15  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>,    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 <debian-l10n-german@lists.debian.org>.