Se recomienda usar Visual Studio 2017

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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 del archivo abierto.

buffer
Puntero a la estructura para almacenar los resultados.

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 el controlador de parámetros no válidos, como se describe en validación del parámetro. Si la ejecución puede continuar, errno está establecido en EBADF, en el caso de un descriptor de archivo no válido o a EINVALsi buffer es NULL.

El _fstat función obtiene información acerca del archivo abierto asociado fd y lo almacena en la estructura que señala buffer. El _stat estructura, definida en sys\stat, contiene los siguientes campos.

st_atime
Hora del último acceso de archivo.

st_ctime
Hora de creación del archivo.

st_dev
Si un dispositivo fd; de lo contrario, 0.

st_mode
Máscara de bits para información de modo de archivo. El _S_IFCHR bit se establece si fd hace referencia a un dispositivo. El _S_IFREG bit se establece 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_IFCHRy otras constantes se definen en sys\stat.

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 un dispositivo fd; de lo contrario, 0.

st_size
Tamaño del archivo en bytes.

Si fd hace referencia a un dispositivo, el st_atime, st_ctime, st_mtime, y st_size campos no son significativos.

Dado que utiliza Stat.h el _dev_t escriba, que se define en Types.h, debe incluir Types.h antes de Stat.h en el código.

_fstat64, que utiliza el __stat64 estructura, permite las fechas de creación de archivo para expresarse mediante 23:59:59, el 31 de diciembre de 3000, UTC; mientras que las demás funciones solo representan fechas hasta las 23:59:59 del 18 de enero de 2038, hora UTC. La noche del 1 de enero de 1970, es el límite inferior del intervalo de fechas para todas estas funciones.

Variaciones de estas funciones admiten tipos en tiempo de 32 bits o 64 bits y longitudes de archivos de 32 bits 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.

_fstates equivalente a _fstat64i32, y struct``_stat contiene una hora de 64 bits. Esto es así a menos que _USE_32BIT_TIME_T se define, en cuyo caso el comportamiento anterior está en vigor; _fstat usa uno de 32 bits, y struct``_stat contiene una hora de 32 bits. Lo mismo puede decirse de _fstati64.

Tipo de tiempo y variaciones de tipo de longitud de archivo de _stat

Funciones¿_USE_32BIT_TIME_T definida?Tipo de tiempoTipo de longitud de archivo
_fstatNo definida64 bits32 bits
_fstatDefinido32 bits32 bits
_fstat32No se ve afectada por la definición de macro32 bits32 bits
_fstat64No se ve afectada por la definición de macro64 bits64 bits
_fstati64No definida64 bits64 bits
_fstati64Definido32 bits64 bits
_fstat32i64No se ve afectada por la definición de macro32 bits64 bits
_fstat64i32No se ve afectada por la definición de macro64 bits32 bits
FunciónEncabezado necesario
_fstaty
_fstat32y
_fstat64y
_fstati64y
_fstat32i64y
_fstat64i32y

Para obtener más información sobre compatibilidad, vea Compatibility en la introducción.

// 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  

No es aplicable. Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Control de archivos
_access, _waccess
_chmod, _wchmod
_filelength, _filelengthi64
_stat, _wstat (funciones)

Mostrar: