Condividi tramite


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

Vedere anche

Riferimenti

Gestione dei file

_access, _waccess

_chmod, _wchmod

_filelength, _filelengthi64

_stat, funzioni di _wstat