fstat, stat, _wstat

Aus RAD Studio
Wechseln zu: Navigation, Suche

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;
}