fstat, stat, _wstat
Nach oben zu sys\stat.h - Index
Header-Datei
sys\stat.h
Kategorie
Eingabe-/Ausgaberoutinen
Prototyp
int fstat(int handle, struct stat *statbuf);
int stat(const char *path, struct stat *statbuf);
int _wstat(const wchar_t *path, struct stat *statbuf);
Beschreibung
Gibt Informationen über eine geöffnete Datei zurück.
fstat speichert Informationen über die mit handle verbundene Datei oder das Verzeichnis in der Struktur stat.
stat speichert Informationen über die angegebene Datei oder das Verzeichnis in der Struktur stat/_stat. Der Parameter path gibt den Namen der Datei an.
statbuf zeigt auf die Struktur stat/_stat (definiert in sys\stat.h). Diese Struktur enthält die folgenden Felder:
st_mode |
Eine Bit-Maske mit Informationen über den Dateimodus |
st_dev |
Nummer des Laufwerks, auf dem die Datei gespeichert ist, oder Datei-Handle, wenn sich die Datei auf einem Gerät befindet. |
st_rdev |
wie st_dev |
st_nlink |
Auf die Integer-Konstante 1 gesetzt |
st_size |
Größe der Datei in Bytes |
st_atime |
Zeitpunkt des letzten Zugriffs (Windows) oder der letzten Änderung (DOS) |
st_mtime |
Wie st_atime |
st_ctime |
Wie st_atime |
Die Struktur stat enthält drei weitere Felder, die hier nicht erläutert werden. Sie enthalten Werte, die nur unter UNIX von Bedeutung sind.
Die Bit-Maske st_mode mit Informationen über den Modus der geöffneten Datei enthält die folgenden Bits:
Eines der folgenden Bits ist gesetzt:
S_IFCHR |
Wenn sich das Handle auf ein Gerät bezieht. |
S_IFREG |
Wenn sich das Handle auf eine normale Datei bezieht. |
Eines oder beide der folgenden Bits ist gesetzt:
S_IWRITE |
Wenn der Anwender die Berechtigung hat, in die Datei zu schreiben. |
S_IREAD |
Wenn der Anwender die Berechtigung hat, aus der Datei zu lesen. |
Die HPFS- und NTFS-Dateisysteme treffen folgende Unterscheidungen:
st_atime |
Der letzte Zugriff |
st_mtime |
Die letzte Änderung |
st_ctime |
Zeitpunkt der Erstellung |
Rückgabewert
fstat und stat geben 0 zurück, wenn Informationen über die geöffnete Datei bezogen werden konnten.
Bei einem Fehler (die Informationen konnten nicht bezogen werden) geben die Funktionen -1 zurück und setzen die globale Variable errno auf.
EBADF |
Bad file handle (Ungültiges Datei-Handle) |
Beispiel
#include <sys\stat.h>; #include <stdio.h> #include <time.h> int main(void) { struct stat statbuf; FILE *stream; /* Datei für Aktualisierung öffnen */ if ((stream = fopen("DUMMY.FIL", "w+")) == NULL) { fprintf(stderr, "Cannot open output file.\n"); return(1); } fprintf(stream, "This is a test"); fflush(stream); /* Information über die Date beziehen */ fstat(fileno(stream), &statbuf); fclose(stream); /* die Informationen anzeigen */ if (statbuf.st_mode & S_IFCHR) printf("Handle refers to a device.\n"); if (statbuf.st_mode & S_IFREG) printf("Handle refers to an ordinary file.\n"); if (statbuf.st_mode & S_IREAD) printf("User has read permission on file.\n"); if (statbuf.st_mode & S_IWRITE) printf("User has write permission on file.\n"); printf("Drive letter of file: %c\n", 'A'+statbuf.st_dev); printf("Size of file in bytes: %ld\n", statbuf.st_size); printf("Time file last opened: %s\n", ctime(&statbuf.st_ctime)); return 0; }