Condividi tramite


Funzioni _stat, _wstat

Ottiene le informazioni dello stato del file.

int _stat(
   const char *path,
   struct _stat *buffer 
);
int _stat32(
   const char *path,
   struct __stat32 *buffer 
);
int _stat64(
   const char *path,
   struct __stat64 *buffer 
);
int _stati64(
   const char *path,
   struct _stati64 *buffer 
);
int _stat32i64(str
   const char *path,
   struct _stat32i64 *buffer 
);
int _stat64i32(str
   const char *path,
   struct _stat64i32 *buffer 
);
int _wstat(
   const wchar_t *path,
   struct _stat *buffer 
);
int _wstat32(
   const wchar_t *path,
   struct __stat32 *buffer 
);
int _wstat64(
   const wchar_t *path,
   struct __stat64 *buffer 
);
int _wstati64(
   const wchar_t *path,
   struct _stati64 *buffer 
);
int _wstat32i64(
   const wchar_t *path,
   struct _stat32i64 *buffer 
);
int _wstat64i32(
   const wchar_t *path,
   struct _stat64i32 *buffer 
);

Parametri

  • path
    Puntatore a una stringa contenente il percorso del file o la directory.

  • buffer
    Puntatore a strutture che archivia i risultati.

Valore restituito

Ognuna di queste funzioni restituisce 0 vengono ottenute se le informazioni sullo stato dei file. Viene restituito un valore pari a -1 il quale indica un errore, nel caso in cui errno è impostato su ENOENT, per indicare che il nome del file o il percorso non è stato trovato. Un valore restituito di EINVAL indica un parametro non valido; in questo caso errno viene impostato su EINVAL.

Nota

Se path contiene il percorso di una directory, non può contenere un backslash alla fine.In caso affermativo, verrà restituito -1 e errno verrà impostato su ENOENT.

Vedere _doserrno, errno, _sys_errlist, e _sys_nerr per ulteriori informazioni su questo, e altri, codici restituiti.

La data in un file può essere rappresentata se più tardi delle mezzanotte, il 1° gennaio 1970 e prima delle 23:59: 59, il 31 dicembre, 3000, UTC, a meno che non si utilizzi _stat32 o _wstat32, o definiti _USE_32BIT_TIME_Tin questo caso, questa può essere rappresentata solo fino a 03:14:07 del 19 gennaio 2038, UTC.

Note

La funzione di _stat ottiene informazioni sul file o la directory specificata da path e la memorizza nella struttura indicata da buffer. La funzione _stat gestisce automaticamente gli handle della stringa con caratteri multibyte in base alle proprie esigenze, riconoscendo le sequenze di caratteri multibyte in base alla tabella codici multibyte attualmente in uso.

_wstat è una versione a caratteri estesi di _stat; l'argomento path in _wstat è una stringa di caratteri estesi. _wstat e _stat si comportano in modo identico in caso contrario, ma _wstat non gestisce le stringhe di caratteri multibyte.

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.

_stat è equivalente a _stat64i32, e struct _stat contiene un'ora a 64 bit. Questo vale a meno che non sia definito _USE_32BIT_TIME_T n questo caso, è attivo il comportamento precedente; _stat utilizza un tempo a 32 bit e struct _stat contiene un tempo a 32 bit. Lo stesso vale per _stati64.

Nota

_wstat non ha effetto sui collegamenti simbolici di Windows Vista.In questi casi, _wstat riporterà sempre le dimensioni del file a 0._stat funziona correttamente con i collegamenti simbolici.

Questa funzione convalida i parametri. Se sia path o buffer sono NULL, il gestore di parametro non valido viene richiamato, come descritto in Convalida dei parametri.

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

_stat, _wstat

Non definito

64 bit

32 bit

_stat, _wstat

definito

32 bit

32 bit

_stat32, _wstat32

Non dipende dalla definizione macro

32 bit

32 bit

_stat64, _wstat64

Non dipende dalla definizione macro

64 bit

64 bit

_stati64, _wstati64

Non definito

64 bit

64 bit

_stati64, _wstati64

definito

32 bit

64 bit

_stat32i64, _wstat32i64

Non dipende dalla definizione macro

32 bit

64 bit

_stat64i32, _wstat64i32

Non dipende dalla definizione macro

64 bit

32 bit

Mapping di routine di testo generico

Routine TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tstat

_stat

_stat

_wstat

_tstat64

_stat64

_stat64

_wstat64

_tstati64

_stati64

_stati64

_wstati64

_tstat32i64

_stat32i64

_stat32i64

_wstat32i64

_tstat64i32

_stat64i32

_stat64i32

_wstat64i32

La struttura di _stat, definita in SYS \STAT.H, include i seguenti campi.

  • st_gid
    L'identificatore numerico del gruppo proprietario del file (specifico per UNIX). Questo campo verrà sempre zero nei sistemi Windows. Un file reindirizzato viene classificato come file Windows.

  • st_atime
    Orario di ultimo accesso al file. Valido su dischi formattati in NTFS, non su FAT.

  • st_ctime
    Orario della creazione del file. Valido su dischi formattati in NTFS, non su FAT.

  • st_dev
    Numero di unità disco contenente il file (stesso di st_rdev).

  • st_ino
    Numero del nodo dell'informazione (inode per i file specifici su UNIX). Nei file system di UNIX, gli inode descrivono gli indicatori della data e l'ora del file, le autorizzazioni e il contenuto. Quando i file hanno un collegamento forte, condividono lo stesso inode. Gli inode e pertanto st_ino, non hanno alcun significato in FAT, HPFS, o file system NTFS.

  • st_mode
    Maschera di bit per informazioni sulla modalità file. Il bit di _S_IFDIR viene impostato se path specifica una directory; il bit di _S_IFREG viene impostato se path specifica un normale file o un dispositivo. I bit utente di lettura/scrittura vengono impostati in base alla modalità di autorizzazioni file; i bit di esecuzione dell'utente sono impostati come l'estensione del file.

  • st_mtime
    Orario dell'ultima modifica del file.

  • st_nlink
    Sempre 1 nei file system non NTFS.

  • st_rdev
    Numero di unità disco contenente il file (stesso di st_dev).

  • st_size
    Dimensione in byte del file; un integer a 64 bit per le variazioni con il i64 suffisso**.**.

  • st_uid
    Identificatore numerico dell'utente proprietario del file (specifico per UNIX). Questo campo sarà sempre zero nei sistemi Windows. Un file reindirizzato viene classificato come file Windows.

Se path fa riferimento a un dispositivo, st_size, vari campi orario, st_dev e i campi di st_rdev non sono necessari nella struttura di _stat. Poiché STAT.H usa il tipo _dev_t definito in TYPES.H, è necessario includere nel codice TYPES.H prima di STAT.H.

Requisiti

Routine

Intestazione obbligatoria

Intestazioni facoltative

_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32

<sys/types.h> seguito da <sys/stat.h>

<errno.h>

_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

<sys/types.h> seguito da <sys/stat.h> o <wchar.h>

<errno.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.

Esempio

// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.
 
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>

int main( void )
{
   struct _stat buf;
   int result;
   char timebuf[26];
   char* filename = "crt_stat.c";
   errno_t err;

   // Get data associated with "crt_stat.c": 
   result = _stat( filename, &buf );

   // Check if statistics are valid: 
   if( result != 0 )
   {
      perror( "Problem getting information" );
      switch (errno)
      {
         case ENOENT:
           printf("File %s not found.\n", filename);
           break;
         case EINVAL:
           printf("Invalid parameter to _stat.\n");
           break;
         default:
           /* Should never be reached. */
           printf("Unexpected error in _stat.\n");
      }
   }
   else
   {
      // Output some of the statistics: 
      printf( "File size     : %ld\n", buf.st_size );
      printf( "Drive         : %c:\n", buf.st_dev + 'A' );
      err = ctime_s(timebuf, 26, &buf.st_mtime);
      if (err)
      {
         printf("Invalid arguments to ctime_s.");
         exit(1);
      }
      printf( "Time modified : %s", timebuf );
   }
}
  

Equivalente .NET Framework

Vedere anche

Riferimenti

Gestione di file

_access, _waccess

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_getmbcp

_setmbcp