Aracılığıyla paylaş


_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_errlistve _sys_nerr.

Veya kullanmadığınız _stat32_wstat32veya tanımlamadığınız _USE_32BIT_TIME_Tsü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 _statpath belirtilen dosya veya dizin hakkında bilgi alır ve tarafından işaret edilen bufferyapı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 _statgeniş 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 i32i64olur ve dosya boyutunun 32 bit veya 64 bit tamsayı olarak temsil edilip edilmediğini belirtir.

_stat , ile _stat64i32eş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 _stati64de geçerlidir.

Dekont

_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 _statailesi, 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 ENOENThata 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 Rutin _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.Htanımlanan yapısı aşağıdaki alanları içerir.

Alan Tanım
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 ( inodeUNIX'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ı inodepaylaşırlar. inodeve 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_devve st_rdev alanları anlamsızdır. STAT.H içinde TYPES.Htanı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