_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
Ottiene informazioni su un file aperto.
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
);
Parametri
fd
Descrittore di file del file aperto.buffer
Puntatore alla struttura per archiviare i risultati.
Valore restituito
Restituisce 0 se sono state recuperate le informazioni sullo stato del file.Un valore restituito pari a –1 indica un errore.Se il descrittore di file non è valido o buffer è NULL, viene richiamato il gestore di parametro non valido, come descritto in Convalida dei parametri.Se l'esecuzione può continuare, errno viene impostato su EBADF, nel caso di un descrittore di file non valido, o a EINVAL, se buffer è NULL.
Note
La funzione _fstat ottiene informazioni sul file aperto associato a fd e le inserisce nella struttura a cui punta buffer.La struttura _stat, definita in SYS\Stat.h, contiene i seguenti campi.
st_atime
Time dell'ultimo accesso al file.st_ctime
Time di creazione del file.st_dev
Se una periferica, fd; 0 in caso contrario.st_mode
Maschera di bit per informazioni sulla modalità file.Viene impostato il bit _S_IFCHR se fd fa riferimento a una periferica.Viene impostato il bit _S_IFREG se fd fa riferimento a un file comune.I bit di lettura/scrittura vengono impostati in base alla modalità di autorizzazione del file._S_IFCHR e altre costanti sono definite in SYS\Stat.h.st_mtime
Time dell'ultima modifica del file.st_nlink
Sempre 1 nei file system non NTFS.st_rdev
Se una periferica, fd; 0 in caso contrario.st_size
Dimensioni del file in byte.
Se fd si riferisce a una periferica, i campi st_atime, st_ctime, st_mtime, e st_size non sono significativi.
Poiché Stat.h utilizza il tipo _dev_t, definito in Types.h, è necessario includere nel codice Types.h prima di Stat.h.
_fstat64, poiché utilizza la struttura __stat64, consente di esprimere le date di creazione dei file fino alle 23:59:59, del 31 dicembre, 3000, del formato UTC; mentre le altre funzioni rappresentano le date solo fino alle 03:14:07, del 19 gennaio, 2038, del formato UTC.Per tutte queste funzioni, la mezzanotte, del 1° gennaio 1970, è il limite inferiore dell'intervallo di date.
Variazioni di queste funzioni supportano tipi time e lunghezze di file a 32 o 64 bit.Il primo suffisso numerico (32 o 64) indica la dimensione del tipo time utilizzato; il secondo suffisso è i32 o i64, che indica se le dimensioni del file sono rappresentate con un Integer a 32 o a 64bit.
_fstat è equivalente a _fstat64i32, e struct_stat contiene un'ora a 64 bit.Questo vale a meno che non sia definito _USE_32BIT_TIME_T, in questo caso, è attivo il comportamento precedente; _fstat utilizza un time a 32 bit, e struct_stat contiene un time a 32 bit.Lo stesso vale per _fstati64.
Variazioni del tipo time e del tipo di lunghezza del file di _stat
Funzioni |
_USE_32BIT_TIME_T definito? |
Tipo time |
Tipo di lunghezza del file |
---|---|---|---|
_fstat |
Non definito |
64 bit |
32 bit |
_fstat |
Definito |
32 bit |
32 bit |
_fstat32 |
Non dipende dalla definizione macro |
32 bit |
32 bit |
_fstat64 |
Non dipende dalla definizione macro |
64 bit |
64 bit |
_fstati64 |
Non definito |
64 bit |
64 bit |
_fstati64 |
Definito |
32 bit |
64 bit |
_fstat32i64 |
Non dipende dalla definizione macro |
32 bit |
64 bit |
_fstat64i32 |
Non dipende dalla definizione macro |
64 bit |
32 bit |
Requisiti
Funzione |
Intestazione obbligatoria |
---|---|
_fstat |
<sys/stat.h> e <sys/types.h> |
_fstat32 |
<sys/stat.h> e <sys/types.h> |
_fstat64 |
<sys/stat.h> e <sys/types.h> |
_fstati64 |
<sys/stat.h> e <sys/types.h> |
_fstat32i64 |
<sys/stat.h> e <sys/types.h> |
_fstat64i32 |
<sys/stat.h> e <sys/types.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Esempio
// 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 );
}
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di PInvoke.