statvfs(2) statvfs(2)
NAME
statvfs, fstatvfs, statvfs64, fstatvfs64 - Dateisysteminformationen
lesen
SYNTAX
#include <sys/types.h>
#include <sys/statvfs.h>
int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fildes, struct statvfs *buf);
int statvfs64(const char *path, struct statvfs64 *buf);
int fstatvfs64(int fildes, struct statvfs64 *buf);
BESCHREIBUNG
statvfs() liefert einen "generischen Superblock", der ein Dateisystem
beschreibt; dieser kann dazu verwendet werden, um Informationen über
eingehängte Dateisysteme zu bekommen. buf ist ein Zeiger auf eine
Struktur, die weiter unten beschrieben wird. Diese Struktur wird wäh-
rend des Systemaufrufs beschrieben.
path sollte der Name einer Datei sein, welche sich in dem entsprechen-
den Dateisystem befindet. Der Dateisystemtyp ist dabei dem Betriebssy-
stem bekannt. Lese-, Schreib- oder Ausführungsrechte für die angege-
bene Datei werden nicht benötigt, jedoch muß jedes Verzeichnis aus dem
Pfadnamen durchsucht werden können.
Es besteht kein funktionaler Unterschied zwischen statvfs()/fstatvfs()
und statvfs64()/fstatvfs64(), außer bei der Interpretation von
statvfs/statvfs64 [siehe statvfs(5)].
Die Struktur statvfs, auf die buf zeigt, enthält die folgenden Kompo-
nenten:
ulongt fbsize; /* optimale E/A-Größe für read und
write */
ulongt ffrsize; /* grundlegende Blockgröße des Datei-
systems */
fsblkcntt fblocks; /* Gesamtzahl der Blöcke auf dem Datei-
system in Einheiten von ffrsize */
fsblkcntt fbfree; /* Gesamtzahl der freien Blöcke in
Einheiten von ffrsize */
fsblkcntt fbavail; /* Anzahl der verfügbaren freien Blöcke
für einen Nicht-Systemverwalter in
Einheiten von ffrsize */
fsfilcntt ffiles; /* Gesamtzahl der Dateien (I-Nodes) */
fsfilcntt fffree; /* Gesamtzahl der freien Knoten */
fsfilcntt ffavail; /* Anzahl der I-Nodes für einen
Nicht-Systemverwalter */
ulongt ffsid; /* Dateisystemnummer (momentan dev) */
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
statvfs(2) statvfs(2)
char fbasetype[FSTYPSZ]; /* Typname des Zieldateisystems,
nullterminiert */
ulongt fflag; /* Bitmaske der Optionen */
ulongt fnamemax; /* maximale Länge der Dateinamen */
char ffstr[32]; /* Dateisystemspezifische Zeichenkette */
ulongt ffiller[16]; /* reserviert für zukünftige Erweite-
rungen */
fbasetype enthält einen nullterminierten Typnamen des Dateisystems
(FST-Name) über das eingehängte Ziel (z. B. ufs über nfs eingehängt
resultiert in ufs).
Die folgenden Werte können im fflag-Feld zurückgeliefert werden:
STRDONLY 0x01 /* nur lesbares Dateisystem */
STNOSUID 0x02 /* setuid/setgid-Semantik wird nicht unterstützt */
STNOTRUNC 0x04 /* schneidet Dateinamen länger als NAMEMAX
nicht ab */
fstatvfs() ist ähnlich statvfs(), außer daß der Dateiname path aus
statvfs() über einen offenen Dateideskriptor fildes identifiziert
wird, der aus einem erfolgreichen open()-, creat()-, dup()-, fcntl()-
oder pipe()-Systemaufruf resultiert.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
statvfs() und statvfs() schlagen fehl, wenn wenigstens eine der fol-
genden Bedingungen erfüllt ist:
EINTR Ein Signal wurde während der Ausführung der Funktionen
empfangen.
EIO Beim Lesen vom Dateisystem oder Schreiben auf dieses ist
ein E/A-Fehler aufgetreten.
EOVERFLOW Einer der zurückzugebenden Werte kann in der Struktur,
auf die buf zeigt, nicht korrekt dargestellt werden.
statvfs() schlägt fehl, wenn wenigstens eine der folgenden Bedingungen
erfüllt ist:
EACCES Eine Komponente des Pfadpräfixes darf nicht durchsucht
werden.
EFAULT path oder buf weisen über den zugewiesenen Adreßraum des
Prozesses hinaus.
ELOOP Bei der Auflösung von path wurden zu viele symbolische
Links gefunden.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
statvfs(2) statvfs(2)
EMULTIHOP Komponenten von path erfordern den Sprung auf einen fer-
nen Rechner, und die Dateisystemtypen erlauben dies
nicht.
ENAMETOOLONG Die Länge einer Komponente von path überschreitet
NAMEMAX, oder die Länge von path überschreitet
PATHMAX.
ENOENT Entweder eine Komponente des Pfadpräfixes oder die
Datei, die durch path bezeichnet wird, existiert nicht.
ENOLINK path zeigt auf einen fernen Rechner, und der Verweis auf
diesen Rechner ist nicht länger aktiv.
ENOTDIR Eine Komponente des Pfadpräfixes von path ist kein Ver-
zeichnis.
Die Funktion statvfs() kann bei folgender Bedingung fehlschlagen:
ENAMETOOLONG Die Auflösung des Pfadnamens eines symbolischen Links
hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
überschreitet.
fstatvfs() schlägt fehl, wenn wenigstens eine der folgenden Bedingun-
gen erfüllt ist:
EFAULT buf zeigt auf eine ungültige Adresse.
EBADF fildes ist kein offener Dateideskriptor.
ERGEBNIS
Nach erfolgreicher Ausführung wird 0 zurückgegeben. Ansonsten wird der
Wert -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.
HINWEISE
fstatvfs() und statvfs() schlagen fehl, wenn die Gesamtzahl, die freie
Anzahl oder die verfügbare Anzahl von Blöcken oder Dateien in der
zurückzugebenden Struktur (fblocks, fbfree, fbavail, ffiles,
fffree, ffavail) nicht korrekt dargestellt werden kann.
SIEHE AUCH
chmod(2), chown(2), creat(2), link(2), mknod(2), pipe(2), read(2),
time(2), unlink(2), utime(2), write(2), lfs(5), statvfs(5), types(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98