_fstat, _fstat32, _fstat64, _fstati64, , _fstat32i64_fstat64i32

Získá informace o otevřeném souboru.

Syntaxe

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
);

Parametry

fd
Popisovač souboru otevřeného souboru

buffer
Ukazatel na strukturu pro uložení výsledků.

Vrácená hodnota

Vrátí hodnotu 0, pokud jsou získány informace o stavu souboru. Návratová hodnota -1 označuje chybu. Pokud je popisovač souboru neplatný nebo buffer je NULL, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat spuštěním, errno je nastavena na EBADF neplatný popisovač souboru nebo pokud buffer je NULL.EINVAL

Poznámky

Funkce _fstat získá informace o otevřeném souboru přidruženém fd a uloží ho do struktury, na kterou bufferodkazuje . Struktura _stat definovaná v SYS\Stat.hsouboru obsahuje následující pole.

Pole Význam
st_atime Čas posledního přístupu k souboru
st_ctime Čas vytvoření souboru
st_dev Pokud zařízení, fdjinak 0.
st_mode Bitová maska informací v režimu souboru. Bit _S_IFCHR se nastaví, pokud fd odkazuje na zařízení. Bit _S_IFREG se nastaví, pokud fd odkazuje na běžný soubor. Bity pro čtení a zápis se nastavují podle režimu oprávnění souboru. _S_IFCHR a další konstanty jsou definovány v SYS\Stat.h.
st_mtime Čas poslední změny souboru.
st_nlink Vždy 1 v systémech souborů jiných systémů než NTFS.
st_rdev Pokud zařízení, fdjinak 0.
st_size Velikost souboru v bajtech

Pokud fd odkazuje na zařízení, st_atimehodnota , st_ctimest_mtimea st_size pole nejsou smysluplná.

Vzhledem k tomu Stat.h , že používá _dev_t typ, který je definován v Types.h, musíte do kódu zahrnout Types.h Stat.h .

_fstat64, který používá _stat64 strukturu, umožňuje vyjádřit data vytvoření souboru až do 23:59:59, 31. prosince 3000 UTC; zatímco ostatní funkce představují pouze data do 23:59:59 18, 2038 UTC. Dolní mez rozsahu kalendářních dat pro všechny tyto funkce je Půlnoc, 1. ledna 1970.

Varianty těchto funkcí podporují 32bitové nebo 64bitové časové typy a 32bitové nebo 64bitové délky souborů. První číselná přípona (32 nebo 64) označuje velikost použitého časového typu; druhá přípona je buď i32 nebo i64, označující, zda je velikost souboru reprezentována jako 32bitové nebo 64bitové celé číslo.

Není-li _USE_32BIT_TIME_T definován, _fstat je ekvivalentní k hodnotě _fstat64i32a _stat obsahuje 64bitovou dobu. Pokud _USE_32BIT_TIME_T je definováno, _fstat používá 32bitový čas a _stat obsahuje 32bitový čas. Totéž platí pro _fstati64.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Varianty typu času a délky souboru _stat

Funkce _USE_32BIT_TIME_T definovaný? Typ času Typ délky souboru
_fstat Nedefinováno 64bitová 32bitová
_fstat Definované 32bitová 32bitová
_fstat32 Není ovlivněn definicí makra. 32bitová 32bitová
_fstat64 Není ovlivněn definicí makra. 64bitová 64bitová
_fstati64 Nedefinováno 64bitová 64bitová
_fstati64 Definované 32bitová 64bitová
_fstat32i64 Není ovlivněn definicí makra. 32bitová 64bitová
_fstat64i32 Není ovlivněn definicí makra. 64bitová 32bitová

Požadavky

Function Požadovaný hlavičkový soubor
_fstat <sys/stat.h> a <sys/types.h>
_fstat32 <sys/stat.h> a <sys/types.h>
_fstat64 <sys/stat.h> a <sys/types.h>
_fstati64 <sys/stat.h> a <sys/types.h>
_fstat32i64 <sys/stat.h> a <sys/types.h>
_fstat64i32 <sys/stat.h> a <sys/types.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

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

Viz také

Zpracování souborů
_access, _waccess
_chmod, _wchmod
_filelength, _filelengthi64
_stat, _wstat funkce