_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 bufferelement . Struktura zdefiniowana _stat w SYS\Stat.hpliku 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_atimepola , st_ctime, st_mtimei st_size nie mają znaczenia.

Ponieważ Stat.h używa typu zdefiniowanego _dev_t w Types.hpliku , 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 _fstat64i32parametru 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 Zdefiniowane? 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