_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 buffer
NULL
olarak 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 buffer
yapıda depolar. _stat
içinde SYS\Stat.h
tanı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; fd aksi 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.h tanı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; fd aksi takdirde 0. |
st_size |
Dosyanın bayt cinsinden boyutu. |
Bir cihaza başvuruyorsanız fd
, st_atime
, st_ctime
, st_mtime
ve st_size
alanları anlamlı değildir.
Stat.h
içinde tanımlanan Types.h
türünü kullandığından_dev_t
, kodunuzda daha önce Stat.h
eklemeniz Types.h
gerekir.
_fstat64
yapı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 i32
i64
olur 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 _fstat64i32
eş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 _fstati64
de 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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin