_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

Ruft Informationen über eine geöffnete Datei ab.

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 zur Struktur, z von Ergebnissen zu speichern.

Rückgabewert

Gibt 0 zurück, wenn die DateiStatusinformationen abgerufen. Bei dem Rückgabewert von 1 gibt einen Fehler an. Wenn der Dateideskriptor ungültig ist, oder bufferNULL ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, wird errno auf EBADF, im Fall eines ungültigen Dateideskriptors oder auf EINVAL festgelegt, wenn bufferNULL ist.

Hinweise

Die _fstat-Funktion ruft Informationen über die geöffnete Datei ein, die fd zugeordnet wird und speichert sie in der Struktur, die auf den durch buffer gezeigt wird. Die _stat-Struktur, die in SYS\Stat.h, enthält die folgenden Felder.

  • st_atime
    Zeit des letzten Dateizugriffs.

  • st_ctime
    Zeitpunkt der Erstellung der Datei.

  • st_dev
    Wenn ein Gerät, fd; 0 andernfalls.

  • st_mode
    Bitmaske zu Dateimodusinformation. Das _S_IFCHR Ausführungsbits wird festgelegt, wenn fd ein Gerät verweist. Das _S_IFREG Ausführungsbits wird festgelegt, wenn fd eine normale Datei verweist. Die Lese-Schreibbits werden entsprechend dem Berechtigungsmodus der Datei festgelegt. _S_IFCHR und anderer Konstanten werden in SYS\Stat.h definiert.

  • st_mtime
    Zeitpunkt der letzten Änderung der Datei.

  • st_nlink
    Immer 1 auf NichtNTFS Dateisystemen.

  • st_rdev
    Wenn ein Gerät, fd; 0 andernfalls.

  • st_size
    Größe einer Datei in Bytes.

Wenn fd ein Objekt verweist, sind st_atime, st_ctime, st_mtime und st_size Felder nicht sinnvoll.

Da Stat.h den _dev_t-Typs, der in Types.h definiert ist, müssen Sie Types.h vor Stat.h im Code.

_fstat64, die die __stat64-Struktur verwendet, unterstützt von 23:59 die oben angegeben werden können, DateiErstellungsdatumsangaben: 59 3000 am 31. Dezember, UTC; während die anderen Funktionen nur Datumsangaben von 03:14 darstellen: Am 7. Januar 19 2038, UTC. Mitternacht am 1. Januar 1970 ist die untere Begrenzung des Zeitraums für alle diese Funktionen.

Variationen dieser Funktionsstütz32-bit- oder 64 bit-Zeittypen und -32-Bit- oder 64-Bit-Version Datei lang. Das erste numerische Suffix (32 oder 64) gibt die Größe des verwendeten Zeittyps an; das zweite Suffix ist entweder i32 oder i64 angibt, ob die Dateigröße als 32-Bit- oder 64-Bit-ganzeZahl dargestellt wird.

_fstat entspricht _fstat64i32, struct und _stat enthält eine 64-Bit-Zeit. Dies gilt, es sei denn, _USE_32BIT_TIME_T definiert wird, in diesem Fall das alte Verhalten gültig ist; _fstat verwendet eine 32-Bit-Zeit, struct und _stat enthält eine 32-Bit-Zeit. Das gilt für _fstati64 erfüllt.

Die Zeit Typs fest und fügen Sie Längen-Typ-Variationen von _stat

Funktionen

_USE_32BIT_TIME_T definiert?

Zeittyp

Dateilängentyp

_fstat

Nicht definiert

64 Bit

32 Bit

_fstat

Definiert

32 Bit

32 Bit

_fstat32

Beeinflusst weder von der Makrodefinition

32 Bit

32 Bit

_fstat64

Beeinflusst weder von der Makrodefinition

64 Bit

64 Bit

_fstati64

Nicht definiert

64 Bit

64 Bit

_fstati64

Definiert

32 Bit

64 Bit

_fstat32i64

Beeinflusst weder von der Makrodefinition

32 Bit

64 Bit

_fstat64i32

Beeinflusst weder von der Makrodefinition

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 in der Einführung.

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

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Dateibehandlung

_access, _waccess

_chmod, _wchmod

_filelength, _filelengthi64

_stat- und _wstat-Funktionen