Compartir a través de


_stat, _wstat (Funciones)

Obtenga información de estado en 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(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 
);

Parámetros

  • path
    Puntero a una cadena que contiene la ruta del archivo o de directorio.

  • 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 del archivo. Un valor devuelto de – 1 indica un error, en este caso errno se establece en ENOENT, que indica que el nombre del archivo o la ruta no se encuentra. Un valor devuelto de EINVAL indica un parámetro no válido; errno también se establece en EINVAL en este caso.

Nota

Si path contiene la ubicación de un directorio, no puede contener una barra diagonal inversa final.Si lo hace, -1 se devolverá y errno se establecerá en ENOENT.

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

La marca de fecha en un archivo puede ser representado si es posterior a medianoche, el 1 de enero de 1970, y antes de 23:59: 59, el 31 de diciembre, 3000, la hora UTC, a menos que utilice _stat32 o _wstat32, o se ha definido _USE_32BIT_TIME_T, en este caso la fecha se puede representar sólo hasta 03:14: 7 de enero de 19, 2038, La hora UTC.

Comentarios

La función de _stat obtiene información sobre el archivo o el directorio especificado por path y la almacena en la estructura designada por a buffer. _stat controla automáticamente argumentos de cadena de multibyte- carácter según corresponda, reconociendo secuencias de multibyte- carácter 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. _wstat y _stat se comportan exactamente igual excepto que _wstat no controla las cadenas de multibyte- carácter.

Las variaciones de estas funciones admiten 32 - o tipos de 64 bits del tiempo, y 32 - o longitud 64 bits del archivo. El primer sufijo numérico (32 o 64) indica el tamaño del tipo de tiempo utilizado; el segundo sufijo es i32 o i64, que indica si el tamaño de archivo está representado como un entero de 32 bits o de 64 bits.

_stat es equivalente a _stat64i32, y struct_stat contiene una hora 64 bits. Esto es así a menos que se defina _USE_32BIT_TIME_T , en cuyo caso el comportamiento antiguo está vigente; _stat utiliza un período de 32 bits, y struct_stat contiene un plazo de 32 bits. Lo mismo sucede con _stati64.

Nota

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

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

El tipo y el archivo Length de tiempo escriben variaciones de _stat

Funciones

¿_USE_32BIT_TIME_T definido?

Tipo de tiempo

Tipo de la longitud del archivo

_stat, _wstat

No definido

64 bits

32 bits

_stat, _wstat

Definido

32 bits

32 bits

_stat32, _wstat32

No se ve afectado por la definición de macro

32 bits

32 bits

_stat64, _wstat64

No se ve afectado por la definición de macro

64 bits

64 bits

_stati64, _wstati64

No definido

64 bits

64 bits

_stati64, _wstati64

Definido

32 bits

64 bits

_stat32i64, _wstat32i64

No se ve afectado por la definición de macro

32 bits

64 bits

_stat64i32, _wstat64i32

No se ve afectado por la definición de macro

64 bits

32 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 de _stat , definido en SYS\STAT.H, incluye los siguientes campos.

  • st_gid
    El identificador numérico del grupo que posee el campo (UNIX- específico) este de archivo siempre será cero en los sistemas de Windows. Un archivo redirigido se clasifica como archivo de Windows.

  • st_atime
    Hora del último acceso del archivo. Válido en NTFS pero no en FAT formateó unidades de disco.

  • st_ctime
    Hora de creación del archivo. Válido en NTFS pero no en FAT formateó unidades de disco.

  • st_dev
    Número de unidades de disco que contiene el archivo (igual que st_rdev).

  • st_ino
    Número de nodo de información ( inode) para el archivo (UNIX- concreto). En los sistemas de archivos UNIX, inode describe la fecha y las marcas de tiempo, los permisos, y contenido. Cuando los archivos duro- están vinculados a otro, comparten mismo inode. inodey, por consiguiente st_ino, no tiene ningún significado en FAT, HPFS, o sistemas de archivos NTFS.

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

  • st_mtime
    Hora de modificación del archivo.

  • st_nlink
    Siempre 1 en los sistemas de archivos no NTFS.

  • st_rdev
    Número de unidades de disco que contiene el archivo (igual que st_dev).

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

  • st_uid
    Identificador numérico del usuario que posee el archivo (UNIX- concreto). Este campo siempre será cero en los sistemas de Windows. Un archivo redirigido se clasifica como archivo de Windows.

Si path hace referencia a un dispositivo, st_size, varios campos de tiempo, st_dev, y los campos de st_rdev en la estructura de _stat son sentido. Dado que STAT.H utiliza _dev_t tipo definido en TYPES.H, debe incluir TYPES.H antes de STAT.H en el código.

Requisitos

Rutina

Encabezado necesario

Encabezados opcionales

_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32

<sistema/types.h seguido> por el sistema <y stat.h>

<errno.h>

_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

<el sistema/types.h seguido> del sistema <y stat.h o wchar.h> <>

<errno.h>

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

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

Equivalente en .NET Framework

Vea también

Referencia

Control de archivos

_access, _waccess

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_getmbcp

_setmbcp