realpath(3) Library Functions Manual realpath(3) BEZEICHNUNG realpath - gibt den standardisierten absoluten Pfadnamen zuruck BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include #include char *realpath(const char *restrict pfad, char *restrict aufgeloester_pfad); Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)): realpath(): _XOPEN_SOURCE >= 500 || /* Glibc >= 2.19: */ _DEFAULT_SOURCE || /* Glibc <= 2.19: */ _BSD_SOURCE BESCHREIBUNG realpath expandiert alle symbolischen Links und lost Referenzen auf >>.<<, >>..<< und zusatzlichen >>/<<-Zeichen in der durch Null beendeten Zeichenkette pfad auf, um einen standardisierten absoluten Pfadnamen zu erzeugen. Der resultierende Pfadname wird als Zeichenkette, die durch Null beendet wird, in dem Puffer mit maximal PATH_MAX Byte gespeichert, auf den aufgeloester_pfad zeigt. Der resultierende Pfad enthalt weder einen symbolischen Link noch die Komponenten >>.<< und >>..<<. Falls aufgeloester_pfad als NULL angegeben wurde, benutzt realpath() malloc(3), um den Puffer des aufgelosten Pfadnamens von PATH_MAX Byte zu reservieren und gibt einen Zeiger auf diesen Puffer zuruck. Der Aufrufende sollte den reservierten Speicher dieses Puffers mit free(3) freigeben. RUCKGABEWERT Wenn kein Fehler auftritt, gibt realpath() einen Zeiger auf aufgeloester_pfad zuruck. Anderenfalls wird ein NULL zuruckgegeben, der Inhalt des Feldes aufgeloester_pfad ist unbestimmt und errno wird gesetzt, um den Fehler anzuzeigen. FEHLER EACCES Der Lese- oder Suchzugriff fur eine Komponente des Pfad-Prafixes wurde verweigert. EINVAL pfad ist NULL. (In Glibc-Versionen vor 2.3 wird dieser Fehler auch zuruckgegeben, wenn aufgeloester_pfad NULL ist.) EIO Beim Lesen vom Dateisystem trat ein E/A-Fehler (engl. I/O) auf. ELOOP Beim Ubersetzen des Pfadnamens wurden zu viele symbolische Links vorgefunden. ENAMETOOLONG Eine Komponente eines Pfadnameds uberschreitet NAME_MAX Zeichen oder ein ganzer Pfadname uberschreitet NAME_MAX Zeichen. ENOENT Die angegebene Datei existiert nicht. ENOMEM Speicher aufgebraucht. ENOTDIR Eine Komponente des Pfad-Prafixes ist kein Verzeichnis. ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------------------------+-------------------------+-----------+ |Schnittstelle | Attribut | Wert | +--------------------------------+-------------------------+-----------+ |realpath() | Multithread-Fahigkeit | MT-Sicher | +--------------------------------+-------------------------+-----------+ VERSIONEN GNU-Erweiterungen Falls der Aufruf entweder mit EACCES oder ENOENT fehlschlagt und aufgeloester_pfad nicht NULL ist, wird das Prafix vom pfad, der nicht lesbar ist oder nicht existiert, in aufgeloester_pfad zuruckgegeben. STANDARDS POSIX.1-2008. GESCHICHTE 4.4BSD, POSIX.1-2001, Solaris. Laut POSIX.1-2001 ist das Verhalten, wenn aufgeloester_pfad NULL ist, abhangig von der Implementierung. POSIX.1-2008 spezifiziert das Verhalten, das auf dieser Seite beschrieben wird. Auf 4.4BSD und Solaris ist die Langenbeschrankung des Pfadnamens MAXPATHLEN (in ). SUSv2 schreibt vor, dass PATH_MAX und NAME_MAX in stehen oder von der Funktion pathconf(3) bereitgestellt werden. Ein typischer Quellcode-Ausschnitt konnte wie folgt aussehen #ifdef PATH_MAX path_max = PATH_MAX; #else path_max = pathconf(path, _PC_PATH_MAX); if (path_max <= 0) path_max = 4096; #endif (Aber lesen Sie den Abschnitt FEHLER.) FEHLER Die POSIX.1-2001-Standardversion dieser Funktion ist durch ihre Bauart kaputt, da es unmoglich ist eine passende Grosse des Ausgabepuffers aufgeloester_pfad zu bestimmen. Gemass POSIX.1-2001 reicht ein Puffer der Grosse PATH_MAX aus, aber PATH_MAX muss keine definierte Konstante sein und konnte durch die Benutzung von pathconf(3) erlangt werden. Die Abfrage von pathconf(3) hilft nicht wirklich, da POSIX einerseits warnt, dass das Ergebnis gross und fur die Speicherreservierung ungeeignet sein konnte und andererseits konnte pathconf(3) -1 zuruckgeben, um zu kennzeichnen, dass PATH_MAX unbegrenzt ist. Die Eigenschaft aufgeloester_pfad == NULL die nicht in POSIX.1-2001, jedoch in POSIX.1-2008 standardisiert ist, ermoglicht es, dieses Bauartproblem zu vermeiden. SIEHE AUCH realpath(1), readlink(2), canonicalize_file_name(3), getcwd(3), pathconf(3), sysconf(3) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Patrick Rother , Chris Leick und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.9.1 2. Mai 2024 realpath(3)