_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
, _fstat64i32
Obtiene información sobre un archivo abierto.
Sintaxis
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 del archivo abierto.
buffer
Puntero a la estructura en que se van a almacenar los resultados.
Valor devuelto
Devuelve 0 si se obtiene la información de estado de archivo. Un valor devuelto de -1 indica un error. Si el descriptor de archivo no es válido o buffer
es NULL
, se invoca al controlador de parámetros no válidos, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, errno
se establece en EBADF
para un descriptor de archivo no válido o en EINVAL
si buffer
es NULL
.
Comentarios
La función _fstat
obtiene información sobre el archivo abierto asociado a fd
y la almacena en la estructura a la que apunta buffer
. La estructura _stat
, que se define en SYS\Stat.h
, contiene los campos siguientes.
Campo | Significado |
---|---|
st_atime |
Hora del último acceso al archivo. |
st_ctime |
Hora de creación del archivo. |
st_dev |
Si se trata de un dispositivo, fd ; de lo contrario, 0. |
st_mode |
Máscara de bits para información de modo de archivo. Se establece el bit _S_IFCHR si fd hace referencia a un dispositivo. Se establece el bit _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 se definen en SYS\Stat.h . |
st_mtime |
Hora de la última modificación del archivo. |
st_nlink |
Siempre 1 en sistemas de archivos que no son NTFS. |
st_rdev |
Si se trata de un dispositivo, fd ; de lo contrario, 0. |
st_size |
Tamaño del archivo en bytes. |
Si fd
hace referencia a un dispositivo, los campos st_atime
, st_ctime
, st_mtime
y st_size
no son significativos.
Dado que Stat.h
usa el tipo _dev_t
, que se define en Types.h
, debe incluir Types.h
delante de Stat.h
en el código.
_fstat64
, que usa la estructura _stat64
, permite expresar fechas de creación de archivo hasta las 23:59:59 del 31 de diciembre de 3000, hora UTC; mientras que las demás funciones solo representan fechas hasta las 23:59:59 del 18 de enero de 2038, hora UTC. La medianoche del 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 tiempo de 32 o 64 bits y longitudes de archivos de 32 o 64 bits. El primer sufijo numérico (32
o 64
) indica el tamaño del tipo de tiempo usado; 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.
A menos que se defina _USE_32BIT_TIME_T
, _fstat
equivale a _fstat64i32
y _stat
contiene un tiempo de 64 bits. Cuando _USE_32BIT_TIME_T
se define, _fstat
usa una hora de 32 bits y _stat
contiene una hora de 32 bits. Lo mismo ocurre para _fstati64
.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Tipo de tiempo y variaciones de tipo de longitud de archivo de _stat
Funciones | ¿Se ha definido _USE_32BIT_TIME_T ? |
Tipo de tiempo | Tipo de longitud de archivo |
---|---|---|---|
_fstat |
No definida | 64 bits | 32 bits |
_fstat |
Definido | 32 bits | 32 bits |
_fstat32 |
No se ve afectada por la definición de macro | 32 bits | 32 bits |
_fstat64 |
No se ve afectada por la definición de macro | 64 bits | 64 bits |
_fstati64 |
No definida | 64 bits | 64 bits |
_fstati64 |
Definido | 32 bits | 64 bits |
_fstat32i64 |
No se ve afectada por la definición de macro | 32 bits | 64 bits |
_fstat64i32 |
No se ve afectada por la definición de macro | 64 bits | 32 bits |
Requisitos
Función | Encabezado necesario |
---|---|
_fstat |
<sys/stat.h> y <sys/types.h> |
_fstat32 |
<sys/stat.h> y <sys/types.h> |
_fstat64 |
<sys/stat.h> y <sys/types.h> |
_fstati64 |
<sys/stat.h> y <sys/types.h> |
_fstat32i64 |
<sys/stat.h> y <sys/types.h> |
_fstat64i32 |
<sys/stat.h> y <sys/types.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
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 );
}
File size : 16
Time modified : Wed May 07 15:25:11 2003
Consulte también
Control de archivos
_access
, _waccess
_chmod
, _wchmod
_filelength
, _filelengthi64
Funciones _stat
, _wstat