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

Obtenga información de estado sobre un archivo.

Sintaxis

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.

Valor devuelto

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, errnoENOENTen cuyo caso se establece en , lo que indica que no se pudo encontrar 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_errlisty para _sys_nerr obtener más información sobre este y otros códigos de retorno.

La fecha de un archivo puede representar si es posterior a la medianoche del 1 de enero de 1970 y anterior a las 23:59:59 del 31 de diciembre de 3000, hora UTC, a menos que use _stat32 o _wstat32, o que haya definido _USE_32BIT_TIME_T, en cuyo caso solo se puede representar la fecha hasta las 23:59:59 del 18 de enero de 2038, hora UTC.

Comentarios

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. _stat controla automáticamente los argumentos de cadenas de caracteres multibyte según corresponda, reconociendo las secuencias de caracteres multibyte de acuerdo con 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. _wstat y _stat se comportan de manera idéntica, 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 (32o 64) indica el tamaño del tipo de tiempo utilizado; 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.

_stat es equivalente a _stat64i32y contiene struct_stat un tiempo de 64 bits. Esto es cierto _USE_32BIT_TIME_T a menos que se defina , en cuyo caso el comportamiento anterior está en vigor; _stat usa un tiempo de 32 struct_stat bits y contiene un tiempo de 32 bits. Lo mismo ocurre para _stati64.

Nota

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

Esta función valida sus parámetros. Si path o buffer es NULL, se invoca el controlador de parámetros no válido, como se describe en Parameter Validation.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiarlo, vea Estado global en CRT.

Variaciones de tipo de tiempo y tipo de longitud de archivo de _stat

Funciones ¿_USE_32BIT_TIME_T definida? Tipo de tiempo Tipo de longitud de archivo
_stat, _wstat No definida 64 bits 32 bits
_stat, _wstat Definido 32 bits 32 bits
_stat32, _wstat32 No se ve afectada por la definición de macro 32 bits 32 bits
_stat64, _wstat64 No se ve afectada por la definición de macro 64 bits 64 bits
_stati64, _wstati64 No definida 64 bits 64 bits
_stati64, _wstati64 Definido 32 bits 64 bits
_stat32i64, _wstat32i64 No se ve afectada por la definición de macro 32 bits 64 bits
_stat64i32, _wstat64i32 No se ve afectada por la definición de macro 64 bits 32 bits

Asignaciones de rutina de texto genérico

TCHAR.H Rutina _UNICODE&_MBCS no definido _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 _stat estructura , definida en SYS\STAT.H, incluye los campos siguientes.

Campo Descripción
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; entero de 64 bits para las variaciones con el 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 STAT.H que usa el _dev_t tipo definido en TYPES.H, debe incluir antes TYPES.H en STAT.H el código.

Requisitos

Rutina Encabezado necesario Encabezados 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 sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// 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

Vea también

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