Aracılığıyla paylaş


_fstat, _fstat32, _fstat64, , _fstati64, _fstat32i64, _fstat64i32

Açık bir dosya hakkında bilgi alır.

Sözdizimi

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

Parametreler

fd
Açık dosyanın dosya tanımlayıcısı.

buffer
Sonuçları depolamak için yapı işaretçisi.

Dönüş değeri

Dosya durumu bilgileri alınırsa 0 döndürür. -1 dönüş değeri bir hatayı gösterir. Dosya tanımlayıcısı geçersizse veya buffer iseNULL, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin veriliyorsa, errno geçersiz bir dosya tanımlayıcısı için veya EINVAL ise bufferNULLolarak ayarlanırEBADF.

Açıklamalar

_fstat işlevi, ile fd ilişkilendirilmiş açık dosya hakkında bilgi alır ve tarafından işaret edilen bufferyapıda depolar. _stat içinde SYS\Stat.htanımlanan yapısı aşağıdaki alanları içerir.

Alan Anlamı
st_atime Son dosya erişiminin zamanı.
st_ctime Dosyanın oluşturulma zamanı.
st_dev Bir cihaz ise; fdaksi takdirde 0.
st_mode Dosya modu bilgileri için bit maskesi. Bit _S_IFCHR , bir cihaza başvuruyorsa fd ayarlanır. Bit _S_IFREG , sıradan bir dosyaya başvuruyorsa fd ayarlanır. Okuma/yazma bitleri, dosyanın izin moduna göre ayarlanır. _S_IFCHR ve diğer sabitler içinde SYS\Stat.htanımlanır.
st_mtime Dosyanın son değiştirilme zamanı.
st_nlink NTFS olmayan dosya sistemlerinde her zaman 1.
st_rdev Bir cihaz ise; fdaksi takdirde 0.
st_size Dosyanın bayt cinsinden boyutu.

Bir cihaza başvuruyorsanız fd , st_atime, st_ctime, st_mtimeve st_size alanları anlamlı değildir.

Stat.h içinde tanımlanan Types.htürünü kullandığından_dev_t, kodunuzda daha önce Stat.h eklemeniz Types.h gerekir.

_fstat64yapısını kullanan _stat64 , dosya oluşturma tarihlerinin 23:59:59, 31 Aralık 3000, UTC'ye kadar ifade edilmesini sağlar; diğer işlevler ise yalnızca 18 Ocak 2038, UTC ile 23:59:59 arasındaki tarihleri temsil eder. Tüm bu işlevlerin tarih aralığının alt sınırı Midnight, 1 Ocak 1970'tir.

Bu işlevlerin varyasyonları 32 bit veya 64 bit zaman türlerini ve 32 bit veya 64 bit dosya uzunluklarını destekler. İlk sayısal sonek (32 veya 64) kullanılan zaman türünün boyutunu gösterir; ikinci sonek ya da i32i64olur ve dosya boyutunun 32 bit veya 64 bit tamsayı olarak temsil edilip edilmediğini belirtir.

Tanımlanmadığı sürece _USE_32BIT_TIME_T , _fstat ile _fstat64i32eşdeğerdir ve _stat 64 bit zaman içerir. Tanımlandığında _USE_32BIT_TIME_T , _fstat 32 bit zaman kullanır ve _stat 32 bit zaman içerir. aynı durum için _fstati64de geçerlidir.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Zaman türü ve dosya uzunluğu türü çeşitlemeleri _stat

İşlevler _USE_32BIT_TIME_T Tanımlanan? Saat türü Dosya uzunluğu türü
_fstat Tanımlı değil 64 bit 32 bit
_fstat Tanımlı 32 bit 32 bit
_fstat32 Makro tanımından etkilenmez 32 bit 32 bit
_fstat64 Makro tanımından etkilenmez 64 bit 64 bit
_fstati64 Tanımlı değil 64 bit 64 bit
_fstati64 Tanımlı 32 bit 64 bit
_fstat32i64 Makro tanımından etkilenmez 32 bit 64 bit
_fstat64i32 Makro tanımından etkilenmez 64 bit 32 bit

Gereksinimler

İşlev Gerekli başlık
_fstat <sys/stat.h> ve <sys/types.h>
_fstat32 <sys/stat.h> ve <sys/types.h>
_fstat64 <sys/stat.h> ve <sys/types.h>
_fstati64 <sys/stat.h> ve <sys/types.h>
_fstat32i64 <sys/stat.h> ve <sys/types.h>
_fstat64i32 <sys/stat.h> ve <sys/types.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

Ayrıca bkz.

Dosya işleme
_access, _waccess
_chmod, _wchmod
_filelength, _filelengthi64
_stat, _wstat işlevler