_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 i64st_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
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32