Freigeben über


_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

Ruft Informationen über eine geöffnete Datei ab

Syntax

int _fstat(
   int fd,
   struct _stat *buffer
);
int _fstat32(
   int fd,
   struct _stat32 *buffer
);
int _fstat64(
   int fd,
   struct _stat64 *buffer
);
int _fstati64(
   int fd,
   struct _stati64 *buffer
);
int _fstat32i64(
   int fd,
   struct _stat32i64 *buffer
);
int _fstat64i32(
   int fd,
   struct _stat64i32 *buffer
);

Parameter

fd
Dateideskriptor der geöffneten Datei.

buffer
Zeiger auf die Struktur zum Speichern der Ergebnisse

Rückgabewert

Gibt 0 zurück, wenn die Dateistatusinformationen abgerufen werden Ein Rückgabewert von -1 zeigt einen Fehler an. Wenn der Dateideskriptor ungültig oder buffer NULL ist, ruft diese Funktion den Handler für ungültige Parameter auf, wie unter Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, wird errno im Falle eines ungültigen Dateideskriptors auf EBADF festgelegt. Andernfalls wird es auf EINVAL festgelegt, wenn buffer NULL ist.

Hinweise

Die Funktion _fstat ruft Informationen zur offenen Datei ab, die mit fd verknüpft ist, und speichert sie in der Struktur, auf die buffer verweist. Die in SYS\Stat.h definierte _stat-Struktur enthält die folgenden Felder.

Feld Bedeutung
st_atime Zeitpunkt des letzten Zugriffs auf die Datei
st_ctime Zeitpunkt der Erstellung der Datei.
st_dev Wenn es sich um ein Gerät handelt, dann fd, andernfalls 0.
st_mode Bitmaske für Dateimodusinformationen. Das Bit _S_IFCHR wird festgelegt, wenn fd auf ein Gerät verweist. Das Bit _S_IFREG wird festgelegt, wenn fd auf eine normale Datei verweist. Die Bits für den Lese-/Schreibzugriff werden gemäß dem Dateiberechtigungsmodus festgelegt. _S_IFCHR und andere Konstanten sind in SYS\Stat.h definiert.
st_mtime Uhrzeit der letzten Änderung der Datei
st_nlink Bei Nicht-NTFS-Dateisystemen immer „1“.
st_rdev Wenn es sich um ein Gerät handelt, dann fd, andernfalls 0.
st_size Die Länge der Datei in Bytes.

Wenn sich fd auf ein Gerät bezieht, sind die Felder st_atime, st_ctime, st_mtime und st_size nicht sinnvoll.

Da Stat.h den Typ _dev_t verwendet, der in Types.h definiert ist, müssen Sie Types.h einschließen, bevor Sie Stat.h in den Code aufnehmen.

_fstat64, das die _stat64-Struktur verwendet, ermöglicht es, die Zeitpunkte der Dateierstellung bis 23:59:59 am 31. Dezember 3000 (UTC) anzugeben, während andere Funktionen nur Datumsangaben bis zum 18. Januar 2038, 23:59:59 (UTC) darstellen. Der 1. Januar 1970 (Mitternacht) ist der älteste mögliche Datumsbereich für all diese Funktionen.

Varianten dieser Funktionen unterstützen 32-Bit- oder 64-Bit-Zeittypen und 32-Bit- oder 64-Bit-Dateilängen. Das erste numerische Suffix (32 oder 64) gibt die Größe des verwendeten Zeittyps an; das zweite Suffix ist entweder i32 oder i64und gibt an, ob die Dateigröße als ganze Zahl mit 32 Bit oder 64 Bit dargestellt ist.

Sofern _USE_32BIT_TIME_T nicht definiert ist, entspricht _fstat _fstat64i32, und _stat enthält eine 64-Bit-Zeit. Wenn _USE_32BIT_TIME_T definiert ist, verwendet _fstat eine 32-Bit-Zeit, und _stat enthält eine 32-Bit-Zeit. Gleiches gilt auch für _fstati64.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Varianten ds Uhrzeittyps und Dateilängentyps von _stat

Functions Ist _USE_32BIT_TIME_T definiert? Uhrzeittyp Dateilängentyp
_fstat Nicht definiert 64-Bit 32-Bit
_fstat Definiert 32 Bit 32 Bit
_fstat32 Nicht von der Makrodefinition betroffen 32 Bit 32 Bit
_fstat64 Nicht von der Makrodefinition betroffen 64 Bit 64 Bit
_fstati64 Nicht definiert 64 Bit 64 Bit
_fstati64 Definiert 32-Bit 64-Bit
_fstat32i64 Nicht von der Makrodefinition betroffen 32-Bit 64-Bit
_fstat64i32 Nicht von der Makrodefinition betroffen 64-Bit 32-Bit

Anforderungen

Funktion Erforderlicher Header
_fstat <sys/stat.h> und <sys/types.h>
_fstat32 <sys/stat.h> und <sys/types.h>
_fstat64 <sys/stat.h> und <sys/types.h>
_fstati64 <sys/stat.h> und <sys/types.h>
_fstat32i64 <sys/stat.h> und <sys/types.h>
_fstat64i32 <sys/stat.h> und <sys/types.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_fstat.c
// This program uses _fstat to report
// the size of a file named F_STAT.OUT.

#include <io.h>
#include <fcntl.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <share.h>

int main( void )
{
   struct _stat buf;
   int fd, result;
   char buffer[] = "A line to output";
   char timebuf[26];
   errno_t err;

   _sopen_s( &fd,
             "f_stat.out",
             _O_CREAT | _O_WRONLY | _O_TRUNC,
             _SH_DENYNO,
             _S_IREAD | _S_IWRITE );
   if( fd != -1 )
      _write( fd, buffer, strlen( buffer ) );

   // Get data associated with "fd":
   result = _fstat( fd, &buf );

   // Check if statistics are valid:
   if( result != 0 )
   {
      if (errno == EBADF)
        printf( "Bad file descriptor.\n" );
      else if (errno == EINVAL)
        printf( "Invalid argument to _fstat.\n" );
   }
   else
   {
      printf( "File size     : %ld\n", buf.st_size );
      err = ctime_s(timebuf, 26, &buf.st_mtime);
      if (err)
      {
         printf("Invalid argument to ctime_s.");
         exit(1);
      }
      printf( "Time modified : %s", timebuf );
   }
   _close( fd );
}
File size     : 16
Time modified : Wed May 07 15:25:11 2003

Siehe auch

Dateibehandlung
_access, _waccess
_chmod, _wchmod
_filelength, _filelengthi64
_stat, _wstat Funktionen