Partager via


_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.

Voir aussi

Référence

Gestion de fichiers

_access, _waccess

_chmod, _wchmod

_filelength, _filelengthi64

_stat, _wstat, fonctions