_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 i64
und 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