_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
Ruft Informationen über eine offene 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 Datei öffnen.buffer
Zeiger auf die Struktur, deren Gesamtmenge von Ergebnissen zu speichern.
Rückgabewert
Gibt 0 zurück, wenn die FILE STATUS-Informationen abgerufen werden.Ein Rückgabewert von 1 gibt einen Fehler an.Wenn der Dateideskriptor ungültig ist oder bufferNULLungültige Parameter ist, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird errno zu EBADF, im Falle eines ungültigen Dateideskriptors oder EINVALfestgelegt, wenn bufferNULList.
Hinweise
Die _fstat-Funktion ruft Informationen über die Datei geöffnet, die mit fd zugeordnet ist, und speichert es in der Struktur, auf die durch bufferdargestellt wird.Die _stat Struktur, definiert in Stat.h \ SYS enthält die folgenden Felder.
st_atime
Zeitpunkt des letzten Dateizugriff.st_ctime
Zeitpunkt der Erstellung der Datei.st_dev
Wenn ein Gerät, fd. andernfalls 0.st_mode
Bitmaske zu Dateimodus Informationen.Das _S_IFCHR Bit wird festgelegt, wenn fd ein Gerät verweist.Das _S_IFREG Bit wird festgelegt, wenn fd eine normale Datei verweist.Die Bits mit Lese-/Schreibzugriff Berechtigungen werden nach dem Modus der Datei festgelegt._S_IFCHR und andere Konstanten sind in SYS \ Stat.h definiert.st_mtime
Zeitpunkt der letzten Änderung der Datei.st_nlink
Immer 1 in Dateisystemen Nicht NTFS.st_rdev
Wenn ein Gerät, fd. andernfalls 0.st_size
Größe der Datei in Byte.
Wenn fd eine Einheit verwiesen wird, sind st_atime, st_ctime, st_mtimeund st_size Felder nicht von Bedeutung.
Da Stat.h den _dev_t-Typ verwendet, der in Types.h definiert wurde, müssen Sie vor Types.h Stat.h im Code enthalten.
_fstat64, die die __stat64 Struktur verwendet, bietet und 23:59 oben ausgedrückt werden: Datumsangaben Build FILE59 3000 am 31. Dezember, UTC. während andere Funktionen nur Datumsangaben nach 03:14 Uhr darstellen: Am 7. Januar 19 2038, UTC.Mitternacht am 1. Januar 1970 ist die Untergrenze des Datumsbereichs für alle diese Features.
Variationen dieser Funktion stütz32-bit- oder 64 bit-Zeit Typen und 32-Bit- oder 64-Bit-Datei der Dimension.Im ersten numerischen Suffix (32 oder 64) gibt die Größe des Typs Zeit verwenden. Suffix das zweite i64oder i32 ist, und gibt an, ob die Dateigröße als 32-Bit- oder 64-Bit-ganze Zahl dargestellt wird.
_fstat ist mit _fstat64i32, und struct_stat enthält eine 64-Bit-Zeit.Dies gilt, es sei denn, _USE_32BIT_TIME_T definiert ist, in diesem Fall das alte Verhalten wirksam ist. _fstat verwendet eine 32-Bit-Zeit, und struct_stat enthält eine 32-Bit-Zeit.Dies gilt auch für _fstati64true.
Legen Sie die Uhrzeit fest _stat von Datei-Längen-Typ-Variationen Typ-und
Funktionen |
_USE_32BIT_TIME_T definiert? |
Typ der Uhrzeit |
Typ der Dimension Datei |
---|---|---|---|
_fstat |
Nicht definiert |
64 Bit |
32-Bit |
_fstat |
Definiert |
32-Bit |
32-Bit |
_fstat32 |
Keine Auswirkung von der Makrodefinition |
32-Bit |
32-Bit |
_fstat64 |
Keine Auswirkung von der Makrodefinition |
64 Bit |
64 Bit |
_fstati64 |
Nicht definiert |
64 Bit |
64 Bit |
_fstati64 |
Definiert |
32-Bit |
64 Bit |
_fstat32i64 |
Keine Auswirkung von der Makrodefinition |
32-Bit |
64 Bit |
_fstat64i32 |
Keine Auswirkung 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 finden Sie unter Kompatibilität 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. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.