_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
, _fstat64i32
Obtient des informations sur un fichier ouvert.
Syntaxe
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 du fichier ouvert.
buffer
Pointeur désignant la structure destinée à stocker les résultats.
Valeur retournée
Retourne 0 si les informations sur l’état des fichiers sont obtenues. La valeur renvoyée -1 indique une erreur. Si le descripteur de fichier n’est pas valide, ou si buffer
a la valeur NULL
, le gestionnaire de paramètres non valides est appelé, comme indiqué dans Validation des paramètres. Si l’exécution est autorisée à se poursuivre, errno
a la valeur EBADF
pour un descripteur de fichier non valide, ou EINVAL
si buffer
a la valeur 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.
Champ | Signification |
---|---|
st_atime |
Heure du dernier accès au fichier. |
st_ctime |
Heure de la création du fichier. |
st_dev |
Si un périphérique, fd ; sinon, 0. |
st_mode |
Masque de bits pour les informations relatives au mode de fichier. Le bit _S_IFCHR est défini si fd fait référence à un périphérique. Le bit _S_IFREG est défini si fd fait référence à un fichier ordinaire. Les bits de lecture/écriture sont définis en fonction du mode d’autorisation du fichier. _S_IFCHR et d’autres constantes sont définis dans SYS\Stat.h . |
st_mtime |
Heure de la dernière modification du fichier. |
st_nlink |
Toujours 1 sur les systèmes de fichiers autres que NTFS. |
st_rdev |
Si un périphérique, fd ; sinon, 0. |
st_size |
Taille du fichier en octets. |
Si fd
fait référence à un appareil, les champs st_atime
, st_ctime
, st_mtime
et st_size
ne sont pas significatifs.
Dans la mesure où Stat.h
utilise le type _dev_t
, qui est défini dans Types.h
, vous devez inclure Types.h
avant Stat.h
dans votre code.
_fstat64
, qui utilise la structure _stat64
, permet d’exprimer les dates de création de fichier jusqu’au 31 décembre 3000 à 23:59:59, heure UTC, tandis que les autres fonctions représentent uniquement les dates jusqu’au 18 janvier 2038 à 23:59:59, heure UTC. La limite inférieure de la plage de dates pour toutes ces fonctions est le 1er janvier 1970 à minuit.
Les variantes de ces fonctions prennent en charge les types d’heures 32 bits ou 64 bits, ainsi que les longueurs de fichiers 32 bits ou 64 bits. Le premier suffixe numérique (32
ou 64
) indique la taille du type d’heure 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.
À moins que _USE_32BIT_TIME_T
ne soit défini, _fstat
équivaut à _fstat64i32
, et _stat
contient une heure au format 64 bits. Quand _USE_32BIT_TIME_T
est défini, _fstat
utilise une heure au format 32 bits, et _stat
contient une heure au format 32 bits. La même remarque s’applique à _fstati64
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Variations des types de données d’heure et de taille de fichier de _stat
Functions | _USE_32BIT_TIME_T défini ? |
Type de temps | Type de longueur de fichier |
---|---|---|---|
_fstat |
Non défini | 64 bits | 32 bits |
_fstat |
Défini | 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 | 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 |
Spécifications
Fonction | En-tête requis |
---|---|
_fstat |
<sys/stat.h> et <sys/types.h> |
_fstat32 |
<sys/stat.h> et <sys/types.h> |
_fstat64 |
<sys/stat.h> et <sys/types.h> |
_fstati64 |
<sys/stat.h> et <sys/types.h> |
_fstat32i64 |
<sys/stat.h> et <sys/types.h> |
_fstat64i32 |
<sys/stat.h> et <sys/types.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
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 );
}
File size : 16
Time modified : Wed May 07 15:25:11 2003
Voir aussi
Gestion des fichiers
_access
, _waccess
_chmod
, _wchmod
_filelength
, _filelengthi64
_stat
, fonctions _wstat