.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified Wed Jul 21 22:35:42 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified 18 Mar 1996 by Martin Schulze (joey@infodrom.north.de): .\" Corrected description of getwd(). .\" Modified Sat Aug 21 12:32:12 MET 1999 by aeb - applied fix by aj .\" Modified Mon Dec 11 13:32:51 MET 2000 by aeb .\" Modified Thu Apr 22 03:49:15 CEST 2002 by Roger Luethi .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getcwd 3 "20. Juli 2023" "Linux man\-pages 6.05.01" .SH BEZEICHNUNG getcwd, getwd, get_current_dir_name \- das aktuelle Verzeichnis abfragen .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP, \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP .PP \fBchar *getcwd(char \fP\fIPuffer\fP\fB[.\fP\fIGröße\fP\fB], size_t \fP\fIGröße\fP\fB);\fP \fBchar *get_current_dir_name(void);\fP .PP \fB[[veraltet]] char *getwd(char \fP\fIPuffer\fP\fB[PATH_MAX]);\fP .fi .PP .RS -4 Mit Glibc erforderliche Feature\-Test\-Makros (siehe \fBfeature_test_macros\fP(7)): .RE .PP \fBget_current_dir_name\fP(): .nf _GNU_SOURCE .fi .PP \fBgetwd\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED 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 .fi .SH 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 \fIPuffer\fP zurückgegeben. .PP Die Funktion \fBgetcwd\fP() kopiert den absoluten Pfadnamen des aktuellen Arbeitsverzeichnisses in das Feld, auf das \fIPuffer\fP zeigt und das \fIGröße\fP Byte lang ist. .PP Falls die Länge des absoluten Pfadnamens des Arbeitsverzeichnisses, einschließlich abschließender Null \fIGröße\fP Byte überschreitet, wird NULL zurückgegeben und \fIerrno\fP auf \fBERANGE\fP gesetzt. Eine Anwendung sollte prüfen, ob dieser Fehler auftrat und falls nötig einen größeren Puffer reservieren. .PP Als eine Erweiterung des POSIX.1\-2001\-Standards reserviert \fBgetcwd\fP() der Linux\-Glibc den Puffer dynamisch durch Verwendung von \fBmalloc\fP(3), wenn \fIPuffer\fP NULL ist. In diesem Fall hat der reservierte Puffer die Länge \fIGröße\fP, sofern \fIGröße\fP nicht Null ist, wenn die für \fIPuffer\fP nötige Größe reserviert ist. Der Aufrufende sollte den zurückgegebenen Puffer mit \fBfree\fP(3) freigeben. .PP \fBget_current_dir_name\fP() wird mit \fBmalloc\fP(3) ein Feld reservieren, das groß genug ist, um den absoluten Pfadnamen des aktuellen Arbeitsverzeichnisses aufzunehmen. Wenn die Umgebungsvariable \fBPWD\fP gesetzt ist und ihr Wert stimmt, dann wird dieser Wert zurückgegeben. Der Aufrufende sollte den zurückgegebenen Puffer mit \fBfree\fP(3) freigeben. .PP \fBgetwd\fP() reserviert keinen Speicher mit \fBmalloc\fP(3). Das Argument \fIPuffer\fP sollte ein Zeiger auf ein Feld mit einer Mindestlänge von \fBPATH_MAX\fP Byte sein. Falls die Länge des absoluten Pfadnamens des aktuellen Arbeitsverzeichnisses einschließlich des abschließenden Nullbytes \fBPATH_MAX\fP Byte überschreitet, wird NULL zurückgegeben und \fIerrno\fP auf \fBENAMETOOLONG\fP gesetzt. (Beachten Sie, dass \fBPATH_MAX\fP auf einigen Systemen zur Kompilierzeit möglicherweise keine Konstante ist; außerdem hängt ihr Wert vom Dateisystem ab – siehe \fBpathconf\fP(3).) Aus Gründen der Portierbarkeit und Sicherheit ist die Benutzung von \fBgetwd\fP() missbilligt. .SH 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 \fBgetcwd\fP() und \fBgetwd\fP() ist dies der gleiche Wert wie \fIPuffer\fP. .PP Bei einem Fehlschlag geben diese Funktionen NULL zurück und \fIerrno\fP wird so gesetzt, dass es den Fehler anzeigt. Der Inhalt des Feldes, auf den \fIPuffer\fP zeigt, ist bei einem Fehler nicht definiert. .SH FEHLER .TP \fBEACCES\fP Lese\- oder Suchberechtigung für einen Bestandteil des Dateinamens wurde verweigert. .TP \fBEFAULT\fP \fIPuffer\fP zeigt auf eine falsche Adresse. .TP \fBEINVAL\fP Das Argument \fIGröße\fP ist Null und \fIPuffer\fP ist kein Nullzeiger. .TP \fBEINVAL\fP \fBgetwd\fP(): \fIPuffer\fP ist NULL. .TP \fBENAMETOOLONG\fP \fBgetwd\fP(): Die Größe des absoluten Pfadnamens mit abschließendem Nullbyte überschreitet \fBPATH_MAX\fP Byte. .TP \fBENOENT\fP Der Link auf das aktuelle Arbeitsverzeichnis wurde gelöst. .TP \fBENOMEM\fP Speicher aufgebraucht. .TP \fBERANGE\fP Das Argument \fIGröße\fP 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. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbx lb lb l l l. Schnittstelle Attribut Wert T{ .na .nh \fBgetcwd\fP(), \fBgetwd\fP() T} Multithread\-Fähigkeit MT\-Sicher T{ .na .nh \fBget_current_dir_name\fP() T} Multithread\-Fähigkeit MT\-Sicher env .TE .sp 1 .SH VERSIONEN Das Verhalten von \fBgetcwd\fP() unter POSIX.1\-2001 ist nicht spezifiziert, wenn \fIPuffer\fP NULL ist. .PP POSIX.1\-2001 definiert keinerlei Fehler für \fBgetwd\fP(). .SH VERSIONEN .SS "Unterschiede C\-Bibliothek/Kernel" .\" commit 3272c544da48f8915a0e34189182aed029bd0f2b Unter Linux stellt der Kernel einen Systemaufruf \fBgetcwd\fP() 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 \fBPATH_MAX\fP 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 \fBPATH_MAX\fP 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 \fBENAMETOOLONG\fP fehl. In diesem Fall fällt die Bibliotheksfunktion auf eine (langsamere) alternative Implementierung zurück, die den kompletten Pfadnamen zurückliefert. .PP .\" commit 8df9d1a4142311c084ffeeacb67cd34d190eff74 Folgend einer Änderung in Linux 2.6.36 wird dem durch den Systemaufruf \fBgetcwd\fP() 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 \fBchroot\fP(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. .SH STANDARDS .TP \fBgetcwd\fP() POSIX.1\-2008. .TP \fBget_current_dir_name\fP() GNU. .TP \fBgetwd\fP() Keine. .SH GESCHICHTE .TP \fBgetcwd\fP() POSIX.1\-2001. .TP \fBgetwd\fP() POSIX.1\-2001, aber als VERALTET markiert. Wurde in POSIX.1\-2008 entfernt. Verwenden Sie stattdessen \fBgetcwd\fP(). .PP Unter Linux nutzen diese Funktionen den Systemaufruf \fBgetcwd\fP() (verfügbar seit 2.1.92). Auf älteren Systemen würden sie \fI/proc/self/cwd\fP 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 \fBEACCES\fP fehlschlagen. .SH 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 \fBfchdir\fP(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. .SH FEHLER Seit der Änderung in Linux 2.6.36, die »(unreachable)« in den oben beschriebenen Gegebenheiten hinzufügte, ist Glibcs Implementierung von \fBgetcwd\fP() 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 \fBgetcwd\fP() von solch einem Pfadnamen liefert jetzt einen Fehlschlag mit \fBENOENT\fP. .SH "SIEHE AUCH" \fBpwd\fP(1), \fBchdir\fP(2), \fBfchdir\fP(2), \fBopen\fP(2), \fBunlink\fP(2), \fBfree\fP(3), \fBmalloc\fP(3) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze , Chris Leick , Mario Blättermann und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .