_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
Obtient les informations relatives à un fichier ouvert.
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
);
Paramètres
fd
Descripteur de fichier du fichier ouvert.buffer
Pointeur vers la structure pour stocker les résultats.
Valeur de retour
Retourne 0 si les informations sur l'état du fichier sont obtenues. Une valeur de retour de -1 indique une erreur. Si le descripteur de fichier n'est pas valide ou buffer est NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à continuer, errno a la valeur EBADF, dans le cas d'un descripteur de fichier valide, ou à EINVAL, si buffer est NULL.
Notes
La fonction _fstat obtient des informations sur le fichier ouvert associé à fd et les stocke dans la structure désignée par buffer. La structure _stat, définie dans SYS\Stat.h, contient les champs suivants.
st_atime
Heure du dernier accès au fichier.st_ctime
Heure de la création du fichier.st_dev
Si une unité, fd; sinon 0.st_mode
Masque de bits des informations sur le mode de fichier. Le bit _S_IFCHR est défini si fd fait référence à une unité. Le bit _S_IFREG est défini si fd fait référence à un fichier ordinaire. Les bits en lecture/écriture sont définis selon le mode d'autorisation du fichier. _S_IFCHR et d'autres constantes sont définies dans SYS\Stat.h.st_mtime
Heure de la dernière modification du fichier.st_nlink
Toujours 1 sur des systèmes de fichiers non-NTFS.st_rdev
Si une unité, fd; sinon 0.st_size
Taille du fichier en octets.
Si fd fait référence à une unité, les champs st_atime, st_ctime, st_mtime, et st_size ne sont pas significatifs.
Étant donné que Stat.h utilise le type _dev_t, défini dans Types.h, vous devez inclure Types.h avant Stat.h dans votre code.
_fstat64, qui utilise la structure __stat64, permet aux dates de création de fichiers d'être exprimées jusqu'à 23h59 : 59, le 31 décembre, 3000, UTC ; alors que les autres fonctions représentent uniquement les dates jusqu'à 3h14 : 07, le 19 janvier, 2038, UTC. Minuit, le 1er janvier 1970, est la limite inférieure de la plage de dates pour ces deux fonctions.
Les variations de ces fonctions prennent en charge les types d'heure 32 bits ou 64 bits et les fichiers de longueur 32 bits ou 64 bits. Le premier suffixe numérique (32 ou 64) indique la taille du type de temps utilisé ; le deuxième suffixe est i32 ou i64, qui indique si la taille du fichier est représentée comme un entier 32 bits ou 64 bits.
_fstat équivaut à _fstat64i32, et struct_stat contient une heure 64 bits. Ceci s'applique à moins que _USE_32BIT_TIME_T ne soit défini, auquel cas le comportement antérieur est appliqué ; _fstat utilise une heure 32 bits, et struct_stat contient une heure 32 bits. La même remarque s'applique à _fstati64.
Type d'Heure et Variation du Type de Longueur de Fichier de _stat
Fonctions |
_USE_32BIT_TIME_T defini? |
Type de Temps |
Type de taille de fichier |
---|---|---|---|
_fstat |
Non défini |
64 bits |
32 bits |
_fstat |
(défini par) |
32 bits |
32 bits |
_fstat32 |
Non affecté par la définition de macro |
32 bits |
32 bits |
_fstat64 |
Non affecté par la définition de macro |
64 bits |
64 bits |
_fstati64 |
Non défini |
64 bits |
64 bits |
_fstati64 |
(défini par) |
32 bits |
64 bits |
_fstat32i64 |
Non affecté par la définition de macro |
32 bits |
64 bits |
_fstat64i32 |
Non affecté par la définition de macro |
64 bits |
32 bits |
Configuration requise
Fonction |
En-tête requis |
---|---|
_fstat |
<sys/stat.h> and <sys/types.h> |
_fstat32 |
<sys/stat.h> and <sys/types.h> |
_fstat64 |
<sys/stat.h> and <sys/types.h> |
_fstati64 |
<sys/stat.h> and <sys/types.h> |
_fstat32i64 |
<sys/stat.h> and <sys/types.h> |
_fstat64i32 |
<sys/stat.h> and <sys/types.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.
Exemple
// 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 );
}
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.