Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

fstatvfs, fstatvfs64, statvfs, statvfs64 - Dateisystem-Informationen lesen

&pagelevel(4)&pagelevel

Definition

#include <sys/statvfs.h>
#include <sys/types.h>

int fstatvfs (int fildes, struct statvfs *buf);
int statvfs (const char *path, struct statvfs *buf);
int fstatvfs64 (int fildes, struct statvfs64 *buf);
int statvfs64 (const char *path, struct statvfs64 *buf);

Beschreibung

fstatvfs() liefert Informationen über das Dateisystem, zu dem die mit fildes bezeichnete Datei gehört. buf ist ein Zeiger auf eine Struktur, die weiter unten beschrieben wird. In diese Struktur werden während des Systemaufrufs die Informationen über das Dateisystem eingetragen.

fildes bezeichnet einen offenen Dateideskriptor, der aus einem erfolgreichen open(), creat()-, dup()-, fcntl()- oder pipe()-Systemaufruf resultiert. Der Typ des Dateisystems, das die fildes zugeordnete Datei enthält, ist dabei dem Betriebssystem bekannt. Lese-, Schreib- oder Ausführungsrechte für die angegebene Datei werden nicht benötigt.

Es besteht kein funktionaler Unterschied zwischen fstatvfs()/statvfs() und fstatvfs64()/statvfs64(), außer dass bei fstatvfs64() und statvfs64() der File Status jeweils in einer statvfs64 Struktur zurückgegeben wird.

Die Struktur statvfs, auf die buf zeigt, enthält die folgenden Komponenten:

ulong_t f_bsize;             /* bevorzugte Blockgröße des Dateisystems */
ulong_t f_frsize;            /* grundlegende Blockgröße des Dateisystems
                                (falls unterstützt) */
fsblkcnt_t f_blocks;         /* gesamte Anzahl der Blöcke auf dem
                                Dateisystem in Einheiten von f_frsize */
fsblkcnt_t f_bfree;          /* gesamte Anzahl der freien Blöcke */
fsblkcnt_t f_bavail;         /* Anzahl der verfügbaren freien Blöcke
                                für einen Nicht-Systemverwalter */
fsfilcnt_t f_files;          /* gesamte Anzahl der Dateien (Inodes) */
fsfilcnt_t f_ffree;          /* gesamte Anzahl der freien Knoten */
fsfilcnt_t f_favail;         /* Anzahl der Inodes für einen
                                Nicht-Systemverwalter*/
ulong_t f_fsid;              /* Dateisystemnummer (momentan dev) */
char    f_basetype[FSTYPSZ]; /* Typname des Zieldateisystems, 
                                nullterminiert */
ulong_t f_flag;              /* Bitmaske der Optionen */
ulong_t   f_namemax;         /* maximale Länge der Dateinamen */
char      f_fstr[32];        /* Dateisystemspezifische Zeichenkette */
ulong_t    f_filler[16];     /* reserviert für zukünftige Erweiterungen */

Die Struktur statvfs64 unterscheidet sich von statvfs durch folgende Komponeneten:

fsblkcnt64_t f_blocks
fsblkcnt64_t f_bfree
fsblkcnt64_t f_bavail
fsfilcnt64_t f_files
fsfilcnt64_t f_ffree
fsfilcnt64_t f_favail

f_basetype enthält einen nullterminierten Typnamen des Dateisystems (FST-Name) über das eingehängte Ziel (z.B. s5 über rfs eingehängt resultiert in s5).

Die folgenden Werte können in der Komponente f_flag zurückgeliefert werden:

ST_RDONLY     0x01    /* schreibgeschütztes Dateisystem */
ST_NOSUID     0x02    /* setuid/setgid Semantik wird nicht unterstützt */
ST_NOTRUNC    0x04    /* schneidet Dateinamen länger als NAME_MAX nicht ab */

statvfs() arbeitet genauso wie fstatvfs(), außer dass die Datei über den Pfadnamen angesprochen wird, auf den path verweist. Für jedes Verzeichnis aus dem Pfadnamen muss Sucherlaubnis vorhanden sein.

Returnwert

0

bei Erfolg.

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

fstatvfs(), fstatvfs64(), statvfs() und statvfs64() schlagen fehl, wenn gilt:

 

EIO

Beim Lesen des Dateisystems trat ein E/A-Fehler auf.

 

EINTR

Während der Ausführung der Funktion wurde ein Signal empfangen.

 

fstatvfs() und fstatvfs64() schlagen fehl, wenn gilt: 

 

EBADF

fildes ist kein geöffneter Dateideskriptor.

 

EOVERFLOW

Einer der zurückgegebenen Werte kann in der Struktur, auf die buf zeigt, nicht korrekt dargestellt werden.


statvfs() und statvfs64() schlagen fehl, wenn gilt: 

 

EACCES

Sucherlaubnis existiert für eine Komponente des Pfadpräfixes nicht.

 

ELOOP

Zu viele symbolische Verweise traten bei der Übersetzung von path auf.

 

ENAMETOOLONG 



Der Pfadname, auf den path zeigt, ist länger als {PATH_MAX}, oder die Länge einer Komponente des Pfadnamens überschreitet {NAME_MAX}.

 

ENOENT

Eine Komponente des Pfadnamens existiert nicht, oder path zeigt auf eine leere Zeichenkette.

 

ENOTDIR

Eine Komponente des Pfadpräfixes von path ist kein Verzeichnis.

 

ENAMETOOLONG 

 


Die Auflösung symbolischer Verweise im Pfadnamen führt zu einem Zwischenergebnis, dessen Länge {PATH_MAX} überschreitet.

Hinweis

Nicht alle Elemente der Struktur statvfs sind in allen Dateisystemen belegt.

Siehe auch

chmod(), chown(), creat(), dup(), exec, link(), mknod(), pipe(), read(), time(), unlink(), utime(), write(), sys/statvfs.h.