fpathconf(2) fpathconf(2)
NAME
fpathconf, pathconf - Konfigurierbare Pfadnamenvariablen lesen
SYNTAX
#include <unistd.h>
long int fpathconf(int fildes, int name);
long int pathconf(const char *path, int name);
BESCHREIBUNG
Die Funktionen fpathconf() und pathconf() stellen eine Methode zur
Verfügung, anhand derer die Anwendung den aktuellen Wert eines konfi-
gurierbaren Limits oder einer Option (Variable) ermitteln kann,
der/die einer Datei oder einem Verzeichnis zugeordnet ist.
Bei pathconf() zeigt das Argument path auf den Pfadnamen einer Datei
oder eines Verzeichnisses.
Bei fpathconf() ist das Argument fildes ein offener Dateideskriptor.
Das Argument name stellt die abzufragende Variable relativ zu dieser
Datei bzw. diesem Verzeichnis dar. Von den Implementierungen werden alle
in der folgenden Tabelle aufgelisteten Variablen (und möglicherweise
auch noch weitere) unterstützt. Die Variablen in der folgenden Tabelle
stammen aus limits.h oder unistd.h, und die symbolischen Konstanten, die
in unistd.h definiert sind, sind die entsprechenden Werte für name:
______________________________________________________________________
| Variable | Wert von name | Siehe Bemerkungen |
|________________________|_______________________|____________________|
| FILESIZEBITS | PCFILESIZEBITS | 3, 4 |
|________________________|_______________________|____________________|
| LINKMAX | PCLINKMAX | 1 |
|________________________|_______________________|____________________|
| MAXCANON | PCMAXCANON | 2 |
|________________________|_______________________|____________________|
| MAXINPUT | PCMAXINPUT | 2 |
|________________________|_______________________|____________________|
| NAMEMAX | PCNAMEMAX | 3, 4 |
|________________________|_______________________|____________________|
| PATHMAX | PCPATHMAX | 4, 5 |
|________________________|_______________________|____________________|
| PIPEBUF | PCPIPEBUF | 6 |
|________________________|_______________________|____________________|
| POSIXCHOWNRESTRICTED| PCCHOWNRESTRICTED | 7 |
|________________________|_______________________|____________________|
| POSIXNOTRUNC | PCNOTRUNC | 3, 4 |
|________________________|_______________________|____________________|
| POSIXVDISABLE | PCVDISABLE | 2 |
|________________________|_______________________|____________________|
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
fpathconf(2) fpathconf(2)
Bemerkungen:
1) Wenn path oder fildes sich auf ein Verzeichnis bezieht, so gilt der
zurückgelieferte Wert für das Verzeichnis.
2) Das Verhalten ist undefiniert für den Fall, daß path oder fildes
sich nicht auf eine Terminaldatei bezieht.
3) Wenn path oder fildes sich auf ein Verzeichnis bezieht, so gilt der
Rückgabewert für die Dateien innerhalb des Verzeichnisses.
4) Das Verhalten ist undefiniert, wenn path oder fildes sich nicht auf
ein Verzeichnis bezieht.
5) Wenn sich path oder fildes auf ein Verzeichnis bezieht, dann ent-
spricht der zurückgelieferte Wert der maximalen Länge eines relati-
ven Pfadnamens, wenn das angegebene Verzeichnis das Arbeitsver-
zeichnis wird.
6) Wenn path oder fildes sich auf eine Pipe oder eine FIFO-Datei
bezieht, dann entspricht der zurückgegebene Wert der FIFO-Datei
selbst. Entspricht path oder fildes einem Verzeichnis, dann gilt
der zurückgegebene Wert für jede FIFO-Datei, die innerhalb des Ver-
zeichnisses existiert oder erzeugt werden kann. Wenn sich path oder
fildes auf einen anderen Dateityp bezieht, ist das Verhalten unde-
finiert.
7) Wenn sich path oder fildes auf ein Verzeichnis bezieht, dann gilt
der zurückgegebene Wert für jede Datei, die innerhalb des Verzeich-
nisses existiert oder erzeugt werden kann.
Der Wert des konfigurierbaren Systemlimits oder der Option aus name
ändert sich während der Lebensdauer des aufrufenden Prozesses nicht.
RÜCKGABEWERT
Wenn name ein ungültiger Wert ist, geben sowohl pathconf() als auch
fpathconf() -1 zurück und setzten errno, um den Fehler anzuzeigen.
Wenn die name entsprechende Variable kein Limit für den path oder den
Dateideskriptor hat, geben sowohl pathconf() als auch fpathconf() -1
zurück, ohne errno zu ändern. Wenn die Implementierung path zur Ermitt-
lung des Werts von name benötigt und die Zuordnung von name mit der
durch path angegebenen Datei nicht unterstützt, oder wenn der Prozeß
nicht über die entsprechende Berechtigung zur Abfrage der durch path
angegebenen Datei verfügt, oder path nicht existiert, gibt pathconf()
-1 zurück, und errno wird gesetzt, um den Fehler anzuzeigen.
Wenn die Implementierung fildes zur Ermittlung des Werts von name
benötigt und die Zuordnung von name zu der durch fildes angegebenen
Datei nicht unterstützt, oder wenn fildes ein ungültiger Dateide-
skriptor ist, gibt fpathconf() -1 zurück, und errno wird gesetzt, um
den Fehler anzuzeigen.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
fpathconf(2) fpathconf(2)
Andernfalls gibt pathconf() oder fpathconf() den aktuellen Variablen-
wert für die Datei oder das Verzeichnis zurück, ohne errno zu ändern.
Der zurückgegebene Wert ist nicht restriktiver als der entsprechende
Wert, der der Anwendung bei der Kompilierung mit den implementierungs-
spezifischen Werten aus limits.h oder unistd.h zur Verfügung stand.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
fpathconf() schlägt bei folgender Bedingung fehl:
EBADF fildes ist kein gültiger Dateideskriptor.
pathconf() schlägt fehl, wenn mindestens eine der folgenden Bedingun-
gen vorliegt:
EACCES Suchrechte für eine Komponente des Pfadnamens sind nicht
gegeben.
ELOOP Bei der Auflösung von path wurden zu viele symbolische
Links gefunden.
EMULTIHOP Komponenten von path erfordern den Sprung auf mehrere
ferne Rechner, und der Dateisystemtyp erlaubt dies
nicht.
ENAMETOOLONG Die Länge eines Pfadnamens überschreitet PATHMAX, oder
eine Komponente des Pfadnamens ist länger als NAMEMAX.
ENAMETOOLONG Die Auflösung des Pfadnamens eines symbolischen Links
hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
überschreitet.
ENOENT path wird für das Kommando benötigt, und die benannte
Datei existiert nicht, oder das Argument path zeigt auf
eine leere Zeichenkette.
ENOLINK path zeigt auf einen fernen Rechner, und der Verweis auf
diesen Rechner ist nicht mehr aktiv.
ENOSYS Es wurde versucht, für einen Eintrag in einem Dateisy-
stem eine nicht unterstützte Operation (Erstellen, Ent-
fernen, Link herstellen, Link aufheben) auszuführen.
ENOTDIR Eine Komponente des Pfadpräfixes ist kein Verzeichnis.
Sowohl fpathconf() als auch pathconf() schlagen fehl, wenn folgende
Bedingung erfüllt ist:
EINVAL name enthält einen ungültigen Wert.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
fpathconf(2) fpathconf(2)
EINVAL Die Implementierung unterstützt keine Zuordnung der
Variablen name zu der angegebenen Datei.
HINWEISE
Anhand der Option PCFILESIZEBITS kann ein Prozeß feststellen, welche
Größe eine in einem bestimmten Verzeichnis erstellte Datei aufweisen
kann. Hierbei werden implementierungsabhängige Einschränkungen im
Dateisystem (z. B. aufgrund der Größe von Variablen für Dateigröße und
Anzahl der Blöcke) sowie über längere Zeit geltende Einschränkungen.
berücksichtigt. Nicht berücksichtigt werden dynamische Einschränkungen
wie der Ressourcengrenzwert RLIMFSIZE oder die Anzahl der verfügbaren
Dateiblöcke; der Prozeß muß also noch entsprechende Prüfungen durch-
führen.
Wenn sich das aktuelle Verzeichnis auf einem typischen, für große
Dateien geeigneten Dateisystem von 4 GB befindet, gibt
pathconf(".", PCFILESIZEBITS);
36 zurück. Das heißt, daß auf einem 4 GB großen Dateisystem (vxfs,
ufs) eine Datei bis zur Position 2 hoch 36-1 = 32 GB-1 beschrieben
werden kann (physische Blockbelegung nur bis maximal 4 GB).
Die maximale Dateigröße in einem vxfs-Dateisystem (Veritas) ist 2 hoch
44 -bsize-1, in einem ufs-Dateisystem 2 hoch 45 -bsize-1.
Im allgemeinen gilt: Wenn die maximale Dateigröße, die auf dem einge-
hängten Dateisystem jemals existieren konnte, maxsize ist, so ist der
zurückgegebene Wert 2 plus dem floor des Logarithmus zur Basis 2 von
maxsize (floor = Nächst-Untere-Ganzzahl).
SIEHE AUCH
sysconf(3C), limits(4), unistd(4), lfs(5).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98