_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Obtenga información de estado sobre un archivo.

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(  
   const char *path,  
   struct _stat32i64 *buffer   
);  
int _stat64i32(  
   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   
);  

Parámetros

path
Puntero a una cadena que contiene la ruta de acceso del directorio o el archivo existente.

buffer
Puntero a la estructura que almacena los resultados.

Cada una de estas funciones devuelve 0 si se obtiene la información de estado de archivo. Un valor devuelto de –1 indica un error, en cuyo caso errno se establece en ENOENT, que indica que no se encontró el nombre de archivo o la ruta de acceso. Un valor devuelto de EINVAL indica un parámetro no válido; errno también se establece en EINVAL en este caso.

Vea _doserrno, errno, _sys_errlist y _sys_nerr para obtener más información sobre este y otros códigos de retorno.

Si es posterior a la medianoche del 1 de enero de 1970 y antes de 23:59:59, el 31 de diciembre de 3000, UTC, a menos que utilice la marca de fecha en un archivo que se puede representar _stat32 o _wstat32, o se ha definido _USE_32BIT_TIME_T, en cuyo caso se puede representar la fecha hasta las 23:59:59 del 18 de enero de 2038, hora UTC.

La función _stat obtiene información sobre el archivo o el directorio especificado por path y lo almacena en la estructura que señala buffer. _statadministra automáticamente los argumentos de cadena de caracteres multibyte según corresponda, reconociendo las secuencias de caracteres multibyte según la página de códigos multibyte actualmente en uso.

_wstat es una versión con caracteres anchos de _stat; el argumento path para _wstat es una cadena de caracteres anchos. _wstaty _stat se comportan exactamente igual, salvo que _wstat no controla las cadenas de caracteres multibyte.

Variaciones de estas funciones admiten tipos de tiempo de 32 o 64 bits, y longitudes de archivos de 32 o 64 bits. El primer sufijo numérico (32 o 64) indica el tamaño del tipo de tiempo usado; el segundo sufijo es i32 o i64, lo que indica si el tamaño del archivo se representa como un entero de 32 o 64 bits.

_states equivalente a _stat64i32, y struct``_stat contiene una hora de 64 bits. Esto es así a menos que se defina _USE_32BIT_TIME_T , en cuyo caso el comportamiento anterior está en vigor; _stat usa un tiempo de 32 bits y struct``_stat contiene un tiempo de 32 bits. Lo mismo ocurre para _stati64.

System_CAPS_ICON_note.jpg Nota

_wstatno funciona con Windows Vista vínculos simbólicos. En estos casos, _wstat siempre notificará un tamaño de archivo de 0. _statfunciona correctamente con vínculos simbólicos.

Esta función valida sus parámetros. Si path o buffer es NULL, the invalid parameter handler es invoked, as described in Parameter Validation.

Tipo de tiempo y variaciones de tipo de longitud de archivo de _stat

Funciones¿_USE_32BIT_TIME_T definida?Tipo de tiempoTipo de longitud de archivo
_stat, _wstatNo definida64 bits32 bits
_stat, _wstatDefinido32 bits32 bits
_stat32, _wstat32No se ve afectada por la definición de macro32 bits32 bits
_stat64, _wstat64No se ve afectada por la definición de macro64 bits64 bits
_stati64, _wstati64No definida64 bits64 bits
_stati64, _wstati64Definido32 bits64 bits
_stat32i64, _wstat32i64No se ve afectada por la definición de macro32 bits64 bits
_stat64i32, _wstat64i32No se ve afectada por la definición de macro64 bits32 bits

Asignaciones de rutina de texto genérico

Rutina TCHAR.H_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_tstat_stat_stat_wstat
_tstat64_stat64_stat64_wstat64
_tstati64_stati64_stati64_wstati64
_tstat32i64_stat32i64_stat32i64_wstat32i64
_tstat64i32_stat64i32_stat64i32_wstat64i32

La estructura _stat , definida en SYS\STAT.H, incluye los siguientes campos:

st_gid
Identificador numérico del grupo que posee el archivo (específico de UNIX). Este campo siempre será cero en sistemas Windows. Un archivo redirigido se clasifica como archivo Windows.

st_atime
Hora del último acceso del archivo. Válido en NTFS, pero no en unidades de disco con formato FAT.

st_ctime
Hora de creación del archivo. Válido en NTFS, pero no en unidades de disco con formato FAT.

st_dev
Número de unidad del disco que contiene el archivo (igual que st_rdev).

st_ino
Número del nodo de información ( inode) para el archivo (específico de UNIX). En sistemas de archivos UNIX, inode describe la fecha del archivo y las marcas de tiempo, los permisos y el contenido. Cuando los archivos se vinculan físicamente entre sí, comparten el mismo inode. inodey, por tanto, st_ino, no tiene ningún significado en los sistemas de archivos FAT, HPFS o NTFS.

st_mode
Máscara de bits para información de modo de archivo. El bit _S_IFDIR se establece si path especifica un directorio; el bit _S_IFREG se establece si path especifica un archivo normal o un dispositivo. Los bits de lectura y escritura de usuario se establecen según el modo de permiso del archivo; los bits de ejecución de usuario se establecen según la extensión del nombre de archivo.

st_mtime
Hora de la última modificación del archivo.

st_nlink
Siempre 1 en sistemas de archivos que no son NTFS.

st_rdev
Número de unidad del disco que contiene el archivo (igual que st_dev).

st_size
Tamaño del archivo en bytes; un entero de 64 bits para las variaciones con la i64 sufijo.

st_uid
Identificador numérico del usuario propietario del archivo (específico de UNIX). Este campo siempre será cero en los sistemas Windows. Un archivo redirigido se clasifica como archivo Windows.

Si path hace referencia a un dispositivo, st_size, varios campos de tiempo, st_devy los campos st_rdev de la estructura _stat no tienen sentido. Dado que STAT. H usa el tipo _dev_t que se define en TYPES.H, debe incluir TYPES.H antes de STAT.H en su código.

RutinaEncabezado necesarioEncabezados opcionales
_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32<sys/types.h> seguido de <sys/stat.h><errno.h>
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32<sys/types.h> seguido de <sys/stat.h> o <wchar.h><errno.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

// 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 );  
   }  
}  

File size     : 732  
Drive         : C:  
Time modified : Thu Feb 07 14:39:36 2002  

Control de archivos
_access, _waccess
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_getmbcp
_setmbcp

Mostrar: