Udostępnij za pośrednictwem


_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

Pobiera informacje o otwartym pliku.

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 pliku.

  • buffer
    Wskaźnik do struktury do przechowywania wyników.

Wartość zwracana

Zwraca wartość 0, jeżeli jest uzyskane informacje o stanie pliku.Zwracana wartość –1 wskazuje na błąd.Jeśli deskryptor pliku jest nieprawidłowy lub buffer jest NULL, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, errno jest ustawiona na EBADF, w przypadku deskryptora nieprawidłowy plik, lub do EINVAL, jeśli buffer jest NULL.

Uwagi

_fstat Funkcja uzyskuje informacje o otwartego pliku, skojarzone z fd i zapisuje go w strukturze wskazywanej przez buffer._stat Struktury zdefiniowane w SYS\Stat.h, zawiera następujące pola.

  • st_atime
    Czas ostatniego dostępu do plików.

  • st_ctime
    Czas utworzenia pliku.

  • st_dev
    Jeśli urządzenie, fd; inny sposób 0.

  • st_mode
    Maska bitów dla informacji o trybie pliku._S_IFCHR Bit jest ustawiony, jeśli fd odnosi się do urządzenia._S_IFREG Bit jest ustawiony, jeśli fd odnosi się do zwykły plik.Bity odczytu i zapisu są ustawione zgodnie z tryb uprawnień pliku._S_IFCHRi inne stałe są zdefiniowane w SYS\Stat.h.

  • st_mtime
    Czas ostatniej modyfikacji pliku.

  • st_nlink
    Zawsze 1 w systemach plików niż NTFS.

  • st_rdev
    Jeśli urządzenie, fd; inny sposób 0.

  • st_size
    Rozmiar pliku w bajtach.

Jeśli fd odnosi się do urządzenia, st_atime, st_ctime, st_mtime, i st_size pól nie są znaczące.

Ponieważ korzysta z Stat.h _dev_t typu, który jest zdefiniowany w Types.h, musi zawierać Types.h przed Stat.h w kodzie.

_fstat64, który korzysta z __stat64 struktury, umożliwia tworzenie pliku dat wyrażone są do 23: 59: 59, 31 grudnia, 3000, UTC; inne funkcje stanowią tylko daty poprzez 03: 14: 07 19 stycznia 2038, UTC.Północy, 1 stycznia 1970 r., jest dolną granicą zakres dat dla tych funkcji.

Różnice te funkcje obsługi typy czasu 32-bitowy lub 64-bitowe i 32-bitowy lub 64-bitowy plik długości.Pierwszy sufiks numeryczny (32 lub 64) wskazuje rozmiar typu Godzina używane; drugi sufiks jest albo i32 lub i64, wskazując czy rozmiar pliku jest reprezentowane jako liczba całkowita 32-bitowa lub 64-bitowych.

_fstatjest równoważne z _fstat64i32, i struct_stat zawiera czas 64-bitowych.Jest to wartość true chyba że _USE_32BIT_TIME_T jest zdefiniowany, w którym to przypadku starego zachowania obowiązuje; _fstatużywa czasu 32-bitowych, i struct_stat zawiera czas 32-bitowych.To samo dotyczy dla _fstati64.

Typ czasu i zmian typu długość pliku _stat

Funkcje

Definicja _USE_32BIT_TIME_T?

Typ czasu

Typ długość pliku

_fstat

Nie zdefiniowano

64-bitowe

32-bitowe

_fstat

Definicja

32-bitowe

32-bitowe

_fstat32

Nie dotyczy definicji makra

32-bitowe

32-bitowe

_fstat64

Nie dotyczy definicji makra

64-bitowe

64-bitowe

_fstati64

Nie zdefiniowano

64-bitowe

64-bitowe

_fstati64

Definicja

32-bitowe

64-bitowe

_fstat32i64

Nie dotyczy definicji makra

32-bitowe

64-bitowe

_fstat64i32

Nie dotyczy definicji makra

64-bitowe

32-bitowe

Wymagania

Funkcja

Wymaganego nagłówka

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

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

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

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Obsługa plików

_access, _waccess

_chmod, _wchmod

_filelength, _filelengthi64

_stat, _wstat funkcje