_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 buffer
odkazuje . Struktura _stat
definovaná v SYS\Stat.h
souboru 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í, fd jinak 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í, fd jinak 0. |
st_size |
Velikost souboru v bajtech |
Pokud fd
odkazuje na zařízení, st_atime
hodnota , st_ctime
st_mtime
a 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ě _fstat64i32
a _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