_stat, funciones de _wstat
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 esto, y otro, 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 tienen _USE_32BIT_TIME_Tdefinido, 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 caracteres multibyte según corresponda, reconociendo 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 de path a _wstat es una cadena de caracteres._wstat y _stat se comportan exactamente igual excepto que _wstat no controla las cadenas de caracteres multibyte.
Variaciones de compatibilidad 32 de estas funciones 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 _USE_32BIT_TIME_T está definido, 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 la rutina de texto genérico
rutina de TCHAR.H |
_UNICODE y _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 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-específico).En los sistemas de archivos UNIX, inode describe la fecha y las marcas de tiempo, los permisos, y contenido.Cuando los archivos duro-se 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-específico).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 de <sistema/stat.h> |
<errno.h> |
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32 |
<sistema/types.h> seguido de <sistema/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