_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