_fstat
, , _fstat32
, _fstat64
, _fstati64
, , _fstat32i64
_fstat64i32
Pobiera informacje o otwartym pliku.
Składnia
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
Deskryptor pliku otwartego.
buffer
Wskaźnik do struktury w celu przechowywania wyników.
Wartość zwracana
Zwraca wartość 0, jeśli są uzyskiwane informacje o stanie pliku. Zwracana wartość -1 wskazuje błąd. Jeśli deskryptor pliku jest nieprawidłowy lub buffer
jest NULL
, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, errno
jest ustawione na EBADF
dla nieprawidłowego deskryptora plików lub , EINVAL
jeśli buffer
ma wartość NULL
.
Uwagi
Funkcja _fstat
uzyskuje informacje o otwartym pliku skojarzonym z plikiem fd
i przechowuje je w strukturze wskazywane przez buffer
element . Struktura zdefiniowana _stat
w SYS\Stat.h
pliku zawiera następujące pola.
Pole | Znaczenie |
---|---|
st_atime |
Czas ostatniego dostępu do pliku. |
st_ctime |
Czas utworzenia pliku. |
st_dev |
Jeśli urządzenie, fd ; w przeciwnym razie 0. |
st_mode |
Maska bitowa dla informacji o trybie plików. Bit _S_IFCHR jest ustawiany, jeśli fd odnosi się do urządzenia. Bit _S_IFREG jest ustawiany, jeśli fd odnosi się do zwykłego pliku. Bity odczytu/zapisu są ustawiane zgodnie z trybem uprawnień pliku. _S_IFCHR i inne stałe są zdefiniowane w pliku SYS\Stat.h . |
st_mtime |
Godzina ostatniej modyfikacji pliku. |
st_nlink |
Zawsze 1 w systemach plików innych niż NTFS. |
st_rdev |
Jeśli urządzenie, fd ; w przeciwnym razie 0. |
st_size |
Rozmiar pliku w bajtach. |
Jeśli fd
odwołuje się do urządzenia, st_atime
pola , st_ctime
, st_mtime
i st_size
nie mają znaczenia.
Ponieważ Stat.h
używa typu zdefiniowanego _dev_t
w Types.h
pliku , należy uwzględnić Types.h
go przed Stat.h
kodem.
_fstat64
, który używa _stat64
struktury, umożliwia wyrażenia dat tworzenia plików do 23:59:59, 31 grudnia 3000, UTC; natomiast pozostałe funkcje reprezentują tylko daty do 23:59:59 stycznia 18, 2038, UTC. Dolna granica zakresu dat dla wszystkich tych funkcji to Midnight, 1 stycznia 1970.
Odmiany tych funkcji obsługują typy czasu 32-bitowego lub 64-bitowego oraz 32-bitowe lub 64-bitowe długości plików. Pierwszy sufiks liczbowy (32
lub 64
) wskazuje rozmiar używanego typu czasu; drugi sufiks to i32
lub i64
, wskazując, czy rozmiar pliku jest reprezentowany jako 32-bitowa lub 64-bitowa liczba całkowita.
Chyba że _USE_32BIT_TIME_T
jest zdefiniowany, _fstat
jest odpowiednikiem _fstat64i32
parametru i _stat
zawiera 64-bitowy czas. Gdy _USE_32BIT_TIME_T
jest definiowany, _fstat
używa czasu 32-bitowego i _stat
zawiera 32-bitowy czas. To samo dotyczy ._fstati64
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Odmiany typu czasu i typu długości pliku _stat
Funkcje | _USE_32BIT_TIME_T zdefiniowany? |
Typ godziny | Typ długości pliku |
---|---|---|---|
_fstat |
Nieokreślona | 64-bitowa | 32-bitowa |
_fstat |
Zdefiniowane | 32-bitowa | 32-bitowa |
_fstat32 |
Nie ma to wpływu na definicję makra | 32-bitowa | 32-bitowa |
_fstat64 |
Nie ma to wpływu na definicję makra | 64-bitowa | 64-bitowa |
_fstati64 |
Nieokreślona | 64-bitowa | 64-bitowa |
_fstati64 |
Zdefiniowane | 32-bitowa | 64-bitowa |
_fstat32i64 |
Nie ma to wpływu na definicję makra | 32-bitowa | 64-bitowa |
_fstat64i32 |
Nie ma to wpływu na definicję makra | 64-bitowa | 32-bitowa |
Wymagania
Function | Wymagany nagłówek |
---|---|
_fstat |
<sys/stat.h> i <sys/types.h> |
_fstat32 |
<sys/stat.h> i <sys/types.h> |
_fstat64 |
<sys/stat.h> i <sys/types.h> |
_fstati64 |
<sys/stat.h> i <sys/types.h> |
_fstat32i64 |
<sys/stat.h> i <sys/types.h> |
_fstat64i32 |
<sys/stat.h> i <sys/types.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Obsługa plików
_access
, _waccess
_chmod
, _wchmod
_filelength
, _filelengthi64
_stat
, _wstat
funkcje