_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
obtient des informations sur 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 du fichier ouvert.buffer
Pointeur vers la structure pour stocker des résultats.
Valeur de retour
Retourne 0 si les informations de fichier-état sont obtenues.Une valeur de retour - 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 des paramètres.Si est autorisé à l'exécution de se poursuivre, errno est défini à EBADF, dans le cas d'un descripteur de fichier valide, ou à EINVAL, si buffer est NULL.
Notes
La fonction d' _fstat obtient des informations sur l'ouverture de fichier associé à fd et les stocke dans la structure désignée par buffer.la structure d' _stat , définie dans le système \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 un appareil, fd; sinon 0.st_mode
masque de bits pour les informations de mode d'accès au fichier.Le bit d' _S_IFCHR est défini si fd fait référence à un périphérique.Le bit d' _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 de l'autorisation de fichier._S_IFCHR et d'autres constantes sont définis dans le système \Stat .h.st_mtime
Heure de la dernière modification du fichier.st_nlink
toujours 1 sur les systèmes de fichiers non-NTFS.st_rdev
Si un appareil, fd; sinon 0.st_size
taille du fichier en octets.
Si fd fait référence à un périphérique, st_atime, st_ctime, st_mtime, et champs de st_size ne sont pas explicites.
Étant donné que Stat.h utilise le type de _dev_t , défini dans Types.h, vous devez inclure Types.h avant Stat.h dans votre code.
_fstat64, qui utilise la structure d' __stat64 , accorde les dates de fichier-création à exprimer via le 23h59 : 59, le 31 décembre, 3000, l'heure UTC ; alors que les autres fonctions représentent uniquement des dates via le 3h14 : Le 7 janvier 19, 2038, l'heure UTC.Minuit, le 1er janvier 1970, correspond à la limite inférieure de la plage de dates pour toutes ces fonctions.
Les variations de ces fonctions prennent en charge 32 bits ou des type d'heure 64 bits et longueurs 32 bits ou 64 bits de fichier.le premier suffixe numérique (32 ou 64) indique la taille du type de temps utilisé ; le deuxième suffixe est i32 ou i64, indiquant si la taille du fichier est représentée sous la forme 32 bits ou entier 64 bits.
_fstat équivaut à _fstat64i32, et struct_stat contient l'heure 64 bits.Cela est vrai à moins qu' _USE_32BIT_TIME_T défini, dans ce cas l'ancien comportement est activé ; _fstat utilise l'heure 32 bits, et struct_stat contient l'heure 32 bits.Il en va de même pour _fstati64.
Calculez des variations de type et de longueur de fichier du _stat
Fonctions |
_USE_32BIT_TIME_T défini ? |
type de temps |
Type de longueur du 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> 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 de 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 l' exemples d'appel de code non managé.