_fstat, _fstat64, _fstati64
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

_fstat, _fstat64, _fstati64

Get information about an open file.

int _fstat( 
   int fd,
   struct _stat *buffer 
int _fstat64( 
   int fd,
   struct __stat64 *buffer 
int _fstati64( 
   int fd,
   struct _stati64 *buffer 


File descriptor of open file.
Pointer to structure to store results.

Return Value

Return 0 if the file-status information is obtained. A return value of –1 indicates an error, in which case errno is set to EBADF, indicating an invalid file descriptor.


The _fstat function obtains information about the open file associated with fd and stores it in the structure pointed to by buffer. The _stat structure, defined in SYS\STAT.H, contains the following fields:

Time of last file access.
Time of creation of file.
If a device, fd; otherwise 0.
Bit mask for file-mode information. The _S_IFCHR bit is set if fd refers to a device. The _S_IFREG bit is set if fd refers to an ordinary file. The read/write bits are set according to the file's permission mode. _S_IFCHR and other constants are defined in SYS\STAT.H.
Time of last modification of file.
Always 1 on non-NTFS file systems.
If a device, fd; otherwise 0.
Size of the file in bytes.

If fd refers to a device, the st_atime, st_ctime, st_mtime, and st_size fields are not meaningful.

Because STAT.H uses the _dev_t type, which is defined in TYPES.H, you must include TYPES.H before STAT.H in your code.

_fstat64, which uses the __stat64 structure, allows file-creation dates to be expressed up through 23:59:59, December 31, 3000, UTC, whereas the other functions only represent dates through 19:14:07 January 18, 2038, UTC. Midnight, January 1, 1970, is the lower bound of the date range for all these functions.


Function Required header Compatibility
_fstat <sys/stat.h> and <sys/types.h> Win 98, Win Me, Win NT, Win 2000, Win XP
_fstat64 <sys/stat.h> and <sys/types.h> Win 98, Win Me, Win NT, Win 2000, Win XP
_fstati64 <sys/stat.h> and <sys/types.h> Win 98, Win Me, Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.


// crt_fstat.c
/* This program uses _fstat64 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>

int main( void )
   struct __stat64 buf;
   int fd, result;
   char buffer[] = "A line to output";

   if( (fd = _open( "f_stat.out", _O_CREAT | _O_WRONLY |
                                  _O_TRUNC )) ==  -1 )
   _write( fd, buffer, strlen( buffer ) );

   /* Get data associated with "fd": */
   result = _fstat64( fd, &buf );

   /* Check if statistics are valid: */
   if( result != 0 )
      printf( "Bad file file descriptor\n" );
      printf( "File size     : %ld\n", buf.st_size );

      printf( "Time modified : %s", _ctime64( &buf.st_ctime ) );
   _close( fd );

Sample Output

File size     : 0
Time modified : Wed Feb 13 09:00:01 2002

See Also

File Handling Routines | _access | _chmod | _filelength | _stat | Run-Time Routines and .NET Framework Equivalents

© 2016 Microsoft