Compartir a través de


_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 _fstat64i32y _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