_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
Obtiene información sobre un archivo abierto.
int _fstat(
int fd,
struct _stat *buffer
);
int _fstat32(
int fd,
struct __stat32 *buffer
);
int _fstat64(
int fd,
struct __stat64 *buffer
);
int _fstati64(
int fd,
struct _stati64 *buffer
);
int _fstat32i64(
int fd,
struct _stat32i64 *buffer
);
int _fstat64i32(
int fd,
struct _stat64i32 *buffer
);
Parámetros
fd
Descriptor de archivo del archivo abierto.buffer
Puntero a la estructura para almacenar los resultados.
Valor devuelto
Devuelve 0 si se obtiene la información de estado del archivo.un valor devuelto de – 1 indica un error.Si el descriptor de archivo no es válido 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.Si la ejecución puede continuar, errno se establece en EBADF, en el caso descriptor de archivo no válido, o a EINVAL, si buffer es NULL.
Comentarios
La función de _fstat recopila información sobre el archivo abierto asociado a fd y la almacena en la estructura designada por a buffer.La estructura de _stat , definido en SYS \Stat .h, contiene los siguientes campos.
st_atime
Hora de acceso a archivos pasado.st_ctime
Hora de creación del archivo.st_dev
si un dispositivo, fd; si no 0.st_mode
Máscara de bits de información del modo de acceso de archivo.Se establece el bit de _S_IFCHR si fd hace referencia a un dispositivo.Se establece el bit de _S_IFREG si fd hace referencia a un archivo normal.Los bits de lectura y escritura se establecen según el modo de permiso del archivo._S_IFCHR y otras constantes son definidas en SYS \Stat .h.st_mtime
Hora de modificación del archivo.st_nlink
Siempre 1 en los sistemas de archivos no-NTFS.st_rdev
si un dispositivo, fd; si no 0.st_size
Tamaño de archivo en bytes.
Si fd hace referencia a un dispositivo, st_atime, st_ctime, st_mtime, y los campos de st_size no son significativos.
Dado que Stat.h utiliza el tipo de _dev_t , que se define en Types.h, debe incluir Types.h antes de Stat.h en el código.
_fstat64, que utiliza la estructura de __stat64 , permite que las fechas de creación de archivos se expresadas hacia arriba con 23:59: 59, el 31 de diciembre, 3000, hora UTC; mientras que las demás funciones representan sólo las fechas con 03:14: 7 de enero de 19, 2038, La hora UTC.La medianoche, el 1 de enero de 1970, es el límite inferior del intervalo de fechas para todas estas funciones.
Las variaciones de estas funciones admiten tipos de 32 bits o de 64 bits de tiempo y longitudes de 32 bits o de 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.
_fstat es equivalente a _fstat64i32, 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; _fstat utiliza un período de 32 bits, y struct_stat contiene un plazo de 32 bits.Lo mismo sucede con _fstati64.
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 |
---|---|---|---|
_fstat |
no definido |
64 bits |
32 bits |
_fstat |
Definido |
32 bits |
32 bits |
_fstat32 |
No se ve afectado por la definición de macro |
32 bits |
32 bits |
_fstat64 |
No se ve afectado por la definición de macro |
64 bits |
64 bits |
_fstati64 |
no definido |
64 bits |
64 bits |
_fstati64 |
Definido |
32 bits |
64 bits |
_fstat32i64 |
No se ve afectado por la definición de macro |
32 bits |
64 bits |
_fstat64i32 |
No se ve afectado por la definición de macro |
64 bits |
32 bits |
Requisitos
Función |
Encabezado necesario |
---|---|
_fstat |
<sistema/stat.h> y <sistema/types.h> |
_fstat32 |
<sistema/stat.h> y <sistema/types.h> |
_fstat64 |
<sistema/stat.h> y <sistema/types.h> |
_fstati64 |
<sistema/stat.h> y <sistema/types.h> |
_fstat32i64 |
<sistema/stat.h> y <sistema/types.h> |
_fstat64i32 |
<sistema/stat.h> y <sistema/types.h> |
Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.
Ejemplo
// crt_fstat.c
// This program uses _fstat to report
// the size of a file named F_STAT.OUT.
#include <io.h>
#include <fcntl.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <share.h>
int main( void )
{
struct _stat buf;
int fd, result;
char buffer[] = "A line to output";
char timebuf[26];
errno_t err;
_sopen_s( &fd,
"f_stat.out",
_O_CREAT | _O_WRONLY | _O_TRUNC,
_SH_DENYNO,
_S_IREAD | _S_IWRITE );
if( fd != -1 )
_write( fd, buffer, strlen( buffer ) );
// Get data associated with "fd":
result = _fstat( fd, &buf );
// Check if statistics are valid:
if( result != 0 )
{
if (errno == EBADF)
printf( "Bad file descriptor.\n" );
else if (errno == EINVAL)
printf( "Invalid argument to _fstat.\n" );
}
else
{
printf( "File size : %ld\n", buf.st_size );
err = ctime_s(timebuf, 26, &buf.st_mtime);
if (err)
{
printf("Invalid argument to ctime_s.");
exit(1);
}
printf( "Time modified : %s", timebuf );
}
_close( fd );
}
Equivalente en .NET Framework
No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.