stat(2) stat(2)
NAME
stat, lstat, fstat, stat64, lstat64, fstat64 - Dateistatus abrufen
SYNTAX
#include <sys/types.h>
#include <sys/stat.h>
int stat(const char *path, struct stat *buf);
int lstat(const char *path, struct stat *buf);
int fstat(int fildes, struct stat *buf);
int fstat64(int fildes, struct stat64 *buf);
int lstat64(const char *, struct stat64 *buf);
int stat64(const char *, struct stat64 *buf);
BESCHREIBUNG
Die Funktion stat() erhält Informationen über die angegebene Datei und
schreibt sie in die Struktur, auf die buf zeigt. path weist auf einen
Pfadnamen, der die Datei benennt. Eine Lese-, Schreib- oder Ausfüh-
rungserlaubnis für die angegebene Datei ist nicht erforderlich, jedoch
müssen alle im zur Datei führenden Pfadnamen aufgelisteten Verzeich-
nisse durchsuchbar sein.
lstat() liefert genau wie stat() Dateiattribute. Nur wenn die angege-
bene Datei ein symbolischer Verweis ist, gibt lstat() Informationen
über den Verweis aus, während stat() Informationen über die Datei aus-
gibt, auf die sich der Verweis bezieht.
fstat() liefert Informationen über eine offene Datei mit einem Datei-
deskriptor fildes, der von einem erfolgreichen Systemaufruf open(),
creat(), dup(), fcntl() oder pipe() geliefert wird.
buf ist ein Zeiger auf eine stat-Struktur, in die die jeweilige Datei
betreffenden Informationen geschrieben werden.
Es besteht kein funktionaler Unterschied zwischen stat()/lstat()/fstat()
und stat64()/lstat64()/fstat64(), außer bei der Interpretation von
stat/stat64 [siehe lfs(5)].
Zum Inhalt der Struktur stat, auf die von buf gewiesen wird, gehören
folgende Elemente:
modet stmode; /* Dateimodus [siehe mknod(2)] */
inot stino; /* Dateikennziffer (I-Node) */
devt stdev; /* Gerätekennung, die einen Verzeichniseintrag
für diese Datei enthält */
devt strdev; /* Gerätekennung, nur für zeichen- oder
blockorientierte Gerätedateien definiert */
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
stat(2) stat(2)
nlinkt stnlink; /* Anzahl der Verweise */
uidt stuid; /* Benutzerkennung des Dateibesitzers */
gidt stgid; /* Gruppenkennung des Dateibesitzers */
offt stsize; /* Dateigröße in Bytes */
timet statime; /* Zeit des letzten Zugriffs */
timet stmtime; /* Zeit der letzten Datenänderung */
timet stctime; /* Zeit der letzten Änderung des Dateistatus
Die Zeit wird in Sekunden gemessen ab dem
1. Januar 1970, 00:00:00 Uhr */
long stblksize; /* Bevorzugte E/A-Blockgröße */
blkcntt stblocks; /* Anzahl zugewiesener 512-Byte-Blöcke */
Die Struktur stat64 ist in derselben Weise wie die Struktur stat defi-
niert, mit Ausnahme der folgenden Komponenten:
ino64t stino I-Node.
off64t stsize Dateigröße in Bytes.
blkcnt64t stblocks Anzahl der für dieses Objekt zugeordneten
Blöcke.
stmode Der Modus der Datei ist im Systemaufruf mknod(2) beschrie-
ben. Zusätzlich zu den in mknod(2) beschriebenen Modi,
kann der Modus einer Datei auch SIFLNK sein, wenn die
Datei ein symbolischer Verweis ist. (Beachten Sie, daß
SIFLNK nur von lstat() zurückgegeben werden kann.)
stino Kennzeichnet die Datei im gegebenen Dateisystem eindeutig.
Das Paar stino und stdev kennzeichnet reguläre Dateien
eindeutig.
stdev Kennzeichnet das Dateisystem, in dem die Datei liegt, ein-
deutig. Der Wert kann als Eintrag für den Systemaufruf
ustat(2) zur Bestimmung von weiteren Informationen über
dieses Dateisystem verwendet werden.
strdev Darf nur von Verwaltungskommandos benutzt werden. Es ist
nur für block- oder zeichenorientierte Dateien gültig und
hat nur in dem System eine Bedeutung, in dem die Datei
eingereicht wurde.
stnlink Darf nur von Verwaltungskommandos benutzt werden.
stuid Benutzernummer des Eigentümers der Datei.
stgid Gruppennummer der Gruppe, der die Datei zugeordnet ist.
stsize Für reguläre Dateien ist dies die Größe der Datei in
Bytes. Für block- oder zeichenorientierte Dateien ist die-
ses nicht definiert. Siehe auch pipe(2).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
stat(2) stat(2)
statime Uhrzeit, zu der zuletzt auf die Dateidaten zugegriffen
wurde. Wird von folgenden Systemaufrufen geändert:
creat(), mknod(), pipe(), utime() und read().
stmtime Uhrzeit, zu der Daten zuletzt geändert wurden. Wird von
folgenden Systemaufrufen geändert: creat(), mknod(),
pipe(), utime() und write().
stctime Dies ist die Uhrzeit, zu der der Dateistatus zuletzt geän-
dert wurde. Wird von folgenden Systemaufrufen geändert:
chmod(), chown(), creat(), link(), mknod(), pipe(),
unlink(), utime() und write().
stblksize Ein Hinweis auf die "beste" Größe einer Einheit für E/A-
Operationen. Dieses Feld ist für block- oder zeichenorien-
tierte Gerätedateien nicht definiert.
stblocks Die Gesamtanzahl von physischen Blöcken der Größe 512
Byte, die zur Zeit auf der Platte belegt sind. Dieses Feld
ist für block- oder zeichenorientierte Gerätedateien nicht
definiert.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
stat() und lstat() sind erfolglos, wenn einer oder mehrere der nach-
stehenden Punkte zutreffen:
EACCES Eine Komponente des Pfades darf nicht durchsucht werden.
EFAULT buf oder path weisen auf eine ungültige Adresse.
EINTR Ein Signal wurde während des Systemaufrufs stat() oder
lstat() abgefangen.
ELOOP Bei der Übersetzung von path wurden zuviele symbolische
Verweise angetroffen.
EMULTIHOP Die Komponenten von path erfordern den Sprung auf meh-
rere ferne Rechner, und das Dateisystem erlaubt das
nicht.
ENAMETOOLONG Die Länge einer path-Komponente überschreitet NAMEMAX-
Zeichen, oder die Länge von path überschreitet
PATHMAX-Zeichen.
ENOENT Die angegebene Datei ist nicht vorhanden oder ist der
Null-Pfadname.
ENOTDIR Eine Komponente des Pfades ist kein Verzeichnis.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
stat(2) stat(2)
ENOLINK path weist auf einen fernen Rechner, und die Verbindung
zu diesem Rechner ist nicht mehr aktiv.
EOVERFLOW Eine Komponente ist zu groß, um in der Struktur, auf die
buf zeigt, gespeichert zu werden.
Die Dateigröße in Bytes oder die Anzahl der der Datei
zugeordneten Blöcke oder die I-Node-Nummer der Datei
kann in der Struktur, auf die buf zeigt, nicht korrekt
dargestellt werden.
fstat() ist erfolglos, wenn einer oder mehrere der nachstehenden
Punkte zutreffen:
EBADF fildes ist kein gültiger offener Dateideskriptor.
EFAULT buf weist auf eine ungültige Adresse.
EINTR Ein Signal wurde während des Systemaufrufs fstat() abge-
fangen.
ENOLINK fildes weist auf einen fernen Rechner, und die Verbin-
dung zu diesem Rechner ist nicht mehr aktiv.
EOVERFLOW Eine Komponente ist zu groß, als daß sie in der Struk-
tur, auf die buf zeigt, gespeichert werden könnte.
Die Dateigröße in Bytes oder die Anzahl der der Datei
zugeordneten Blöcke oder die I-Node-Nummer der Datei
kann in der Struktur, auf die buf zeigt, nicht korrekt
dargestellt werden.
ERGEBNIS
Nach erfolgreicher Beendigung wird ein Wert von 0 zurückgegeben.
Andernfalls wird ein Wert von -1 zurückgegeben, und errno wird zur
Anzeige des Fehlers gesetzt.
SIEHE AUCH
chmod(2), chown(2), creat(2), link(2), mknod(2), pipe(2), read(2),
time(2), unlink(2), utime(2), write(2), fattach(3C), lfs(5), stat(5),
types(5).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98