GETCWD(3)

BEZEICHNUNG
getcwd, getwd, get_current_dir_name - das aktuelle Verzeichnis abfragen

ÜBERSICHT
#include <unistd.h>

char *getcwd(char *puffer, size_t groesse);

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:
        _BSD_SOURCE ||
            (_XOPEN_SOURCE >= 500 ||
                _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
            !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
    Vor Glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

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 groesse Byte lang ist.

Falls die Länge des absoluten Pfadnamens des Arbeitsverzeichnisses, einschließlich abschließender Null groesse 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-Standards reserviert getcwd() von Linux (libc4, libc5, glibc) den Puffer dynamisch durch Verwendung von malloc(3), wenn puffer NULL ist. In diesem Fall hat der reservierte Puffer die Länge groesse, sofern groesse nicht Null ist, wenn die für puffer nötige Größereserviert 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() does not malloc(3) any memory. The buf argument should be a pointer to an array at least PATH_MAX bytes long. If the length of the absolute pathname of the current working directory, including the terminating null byte, exceeds PATH_MAX bytes, NULL is returned, and errno is set to ENAMETOOLONG. (Note that on some systems, PATH_MAX may not be a compile-time constant; furthermore, its value may depend on the filesystem, see pathconf(3).) For portability and security reasons, use of getwd() is deprecated.

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 groesse ist Null und puffer ist kein Null-Zeiger.

EINVAL
    getwd(): puffer ist NULL.

ENAMETOOLONG
    getwd(): Die Größe der absoluten Pfadnamens mit abschließender Null überschreitet PATH_MAX Byte.

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

ERANGE
    Das Argument groesse 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.

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
Under Linux, the function getcwd() is a system call (since 2.1.92). On older systems it would query /proc/self/cwd. If both system call and proc filesystem are missing, a generic implementation is called. Only in that case can these calls fail under Linux with EACCES.

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
chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)

KOLOPHON
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org> und Chris Leick <c.leick@vollbio.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>.