_stat
, _stat32
, , _stat64
, _stati64
, _stat32i64
, _stat64i32
, , _wstat
, _wstat32
, _wstat64
_wstati64
, _wstat32i64
,_wstat64i32
Dosyayla ilgili durum bilgilerini alma.
Sözdizimi
int _stat(
const char *path,
struct _stat *buffer
);
int _stat32(
const char *path,
struct __stat32 *buffer
);
int _stat64(
const char *path,
struct __stat64 *buffer
);
int _stati64(
const char *path,
struct _stati64 *buffer
);
int _stat32i64(
const char *path,
struct _stat32i64 *buffer
);
int _stat64i32(
const char *path,
struct _stat64i32 *buffer
);
int _wstat(
const wchar_t *path,
struct _stat *buffer
);
int _wstat32(
const wchar_t *path,
struct __stat32 *buffer
);
int _wstat64(
const wchar_t *path,
struct __stat64 *buffer
);
int _wstati64(
const wchar_t *path,
struct _stati64 *buffer
);
int _wstat32i64(
const wchar_t *path,
struct _stat32i64 *buffer
);
int _wstat64i32(
const wchar_t *path,
struct _stat64i32 *buffer
);
Parametreler
path
Varolan dosya veya dizinin yolunu içeren bir dizenin işaretçisi.
buffer
Sonuçları depolayan yapı işaretçisi.
Dönüş değeri
Dosya durumu bilgileri alınırsa bu işlevlerin her biri 0 döndürür. -1 dönüş değeri, dosya adının veya yolun bulunamadığını belirten bir hata gösterir ve bu durumda errno
olarak ayarlanır ENOENT
. değerinin EINVAL
dönüş değeri geçersiz bir parametreyi gösterir; errno
bu durumda olarak da ayarlanır EINVAL
.
İade kodları hakkında daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Veya kullanmadığınız _stat32
_wstat32
veya tanımlamadığınız _USE_32BIT_TIME_T
sürece, bir dosyadaki tarih damgası gece yarısından, 1 Ocak 1970'ten sonra ve 23:59:59, 31 Aralık 3000, UTC'den önceyse temsil edilebilir. Bu durumda tarih yalnızca 23:59:59 Ocak 2038, UTC'ye kadar gösterilebilir.
Açıklamalar
işlevi tarafından _stat
path
belirtilen dosya veya dizin hakkında bilgi alır ve tarafından işaret edilen buffer
yapıda depolar. _stat
çok baytlı dize bağımsız değişkenlerini uygun şekilde otomatik olarak işler ve kullanımda olan çok baytlı kod sayfasına göre çok baytlı karakter dizilerini algılar.
_wstat
, öğesinin _stat
geniş karakterli bir sürümüdür; path
bağımsız değişkeni _wstat
geniş karakterli bir dizedir. _wstat
ve _stat
çok baytlı dizeleri işlememesi dışında _wstat
aynı şekilde davranır.
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.
_stat
, ile _stat64i32
eşdeğerdir ve struct _stat
tanımlanmadığı sürece _USE_32BIT_TIME_T
64 bit bir süre içerir; bu durumda eski davranış etkindir; _stat
32 bit zaman kullanır ve struct _stat
32 bit zaman içerir. aynı durum için _stati64
de geçerlidir.
Not
_wstat
Windows Vista sembolik bağlantılarıyla çalışmaz. Bu gibi durumlarda, _wstat
her zaman 0 dosya boyutunu bildirir. _stat
sembolik bağlantılarla düzgün çalışır.
İşlev _stat
ailesi, Visual Studio 2013 ve önceki sürümleri yerine FindFirstFile
Visual Studio 2015'te kullanılırCreateFile
. Bu, _stat
eğik çizgi ile biten bir yolda, işlevin olarak ayarlandığında ENOENT
hata errno
vermesinin aksine, yolun bir dizine başvuruda bulunursa başarılı olacağı anlamına gelir.
Bu işlev parametrelerini doğrular. path
veya buffer
iseNULL
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır.
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ü |
---|---|---|---|
_stat , _wstat |
Tanımlı değil | 64 bit | 32 bit |
_stat , _wstat |
Tanımlı | 32 bit | 32 bit |
_stat32 , _wstat32 |
Makro tanımından etkilenmez | 32 bit | 32 bit |
_stat64 , _wstat64 |
Makro tanımından etkilenmez | 64 bit | 64 bit |
_stati64 , _wstati64 |
Tanımlı değil | 64 bit | 64 bit |
_stati64 , _wstati64 |
Tanımlı | 32 bit | 64 bit |
_stat32i64 , _wstat32i64 |
Makro tanımından etkilenmez | 32 bit | 64 bit |
_stat64i32 , _wstat64i32 |
Makro tanımından etkilenmez | 64 bit | 32 bit |
Genel metin yordamı eşlemeleri
TCHAR.H olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
_stat
içinde SYS\STAT.H
tanımlanan yapısı aşağıdaki alanları içerir.
Alan | Açıklama |
---|---|
st_gid |
Dosyanın sahibi olan grubun sayısal tanımlayıcısı (UNIX'e özgü) Bu alan Windows sistemlerinde her zaman sıfır olacaktır. Yeniden yönlendirilen bir dosya, Windows dosyası olarak sınıflandırılır. |
st_atime |
Dosyanın son erişim zamanı. NTFS'de geçerlidir ancak FAT biçimli disk sürücülerinde geçerli değildir. |
st_ctime |
Dosyanın oluşturulma zamanı. NTFS'de geçerlidir ancak FAT biçimli disk sürücülerinde geçerli değildir. |
st_dev |
Dosyayı içeren diskin sürücü numarası (ile aynıdır st_rdev ). |
st_ino |
Dosyanın bilgi düğümünün ( inode UNIX'e özgü) sayısı. UNIX dosya sistemlerinde, inode dosya tarih ve saat damgalarını, izinleri ve içeriği açıklar. Dosyalar birbirine sabit bağlandığında, aynı inode paylaşırlar. inode ve bu nedenlest_ino , FAT, HPFS veya NTFS dosya sistemlerinde bir anlamı yoktur. |
st_mode |
Dosya modu bilgileri için bit maskesi. Bit _S_IFDIR , bir dizin belirtirse path ayarlanır; _S_IFREG bit normal bir dosya veya cihaz belirtirse path ayarlanır. Kullanıcı okuma/yazma bitleri dosyanın izin moduna göre ayarlanır; kullanıcı yürütme bitleri dosya adı uzantısına göre ayarlanır. |
st_mtime |
Dosyanın son değiştirilme zamanı. |
st_nlink |
NTFS olmayan dosya sistemlerinde her zaman 1. |
st_rdev |
Dosyayı içeren diskin sürücü numarası (ile aynıdır st_dev ). |
st_size |
Dosyanın bayt cinsinden boyutu; soneki olan i64 varyasyonlar için 64 bitlik bir tamsayı. |
st_uid |
Dosyanın sahibi olan kullanıcının sayısal tanımlayıcısı (UNIX'e özgü). Bu alan Windows sistemlerinde her zaman sıfır olacaktır. Yeniden yönlendirilen bir dosya, Windows dosyası olarak sınıflandırılır. |
Bir cihaza başvuruyorsapath
, yapısındaki st_size
_stat
çeşitli zaman alanları st_dev
ve st_rdev
alanları anlamsızdır. STAT.H
içinde TYPES.H
tanımlanan türü kullandığından_dev_t
, kodunuzda daha önce STAT.H
eklemeniz TYPES.H
gerekir.
Gereksinimler
Yordam | Gerekli başlık | İsteğe bağlı üst bilgiler |
---|---|---|
_stat , _stat32 , _stat64 , , _stati64 , _stat32i64 , _stat64i32 |
<sys/types.h> ve ardından <sys/stat.h> |
<errno.h> |
_wstat , _wstat32 , _wstat64 , , _wstati64 , _wstat32i64 , _wstat64i32 |
<sys/types.h> <sys/stat.h> ve ardından veya<wchar.h> |
<errno.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
struct _stat buf;
int result;
char timebuf[26];
char* filename = "crt_stat.c";
errno_t err;
// Get data associated with "crt_stat.c":
result = _stat( filename, &buf );
// Check if statistics are valid:
if( result != 0 )
{
perror( "Problem getting information" );
switch (errno)
{
case ENOENT:
printf("File %s not found.\n", filename);
break;
case EINVAL:
printf("Invalid parameter to _stat.\n");
break;
default:
/* Should never be reached. */
printf("Unexpected error in _stat.\n");
}
}
else
{
// Output some of the statistics:
printf( "File size : %ld\n", buf.st_size );
printf( "Drive : %c:\n", buf.st_dev + 'A' );
err = ctime_s(timebuf, 26, &buf.st_mtime);
if (err)
{
printf("Invalid arguments to ctime_s.");
exit(1);
}
printf( "Time modified : %s", timebuf );
}
}
File size : 732
Drive : C:
Time modified : Thu Feb 07 14:39:36 2002
Ayrıca bkz.
Dosya işleme
_access
, _waccess
_fstat
, _fstat32
, _fstat64
, , _fstati64
, _fstat32i64
, _fstat64i32
_getmbcp
_setmbcp