Bagikan melalui


_fstat, , _fstat32_fstat64, _fstati64, , _fstat32i64,_fstat64i32

Mendapatkan informasi tentang file yang terbuka.

Sintaks

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

Parameter

fd
Pendeskripsi file dari file yang terbuka.

buffer
Arahkan ke struktur untuk menyimpan hasil.

Nilai hasil

Mengembalikan 0 jika informasi status file diperoleh. Nilai pengembalian -1 menunjukkan kesalahan. Jika deskriptor file tidak valid atau buffer , NULLhandler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, errno diatur ke EBADF untuk deskriptor file yang tidak valid, atau ke EINVAL jika buffer adalah NULL.

Keterangan

Fungsi ini _fstat mendapatkan informasi tentang file terbuka yang terkait dengan fd dan menyimpannya dalam struktur yang ditujukkan oleh buffer. Struktur _stat , yang ditentukan dalam SYS\Stat.h, berisi bidang berikut.

Bidang Makna
st_atime Waktu akses file terakhir.
st_ctime Waktu pembuatan file.
st_dev Jika perangkat, ; jika tidak, fd0.
st_mode Masker bit untuk informasi mode file. Bit _S_IFCHR diatur jika fd mengacu pada perangkat. Bit _S_IFREG diatur jika fd mengacu pada file biasa. Bit baca/tulis diatur sesuai dengan mode izin file. _S_IFCHR dan konstanta lainnya didefinisikan dalam SYS\Stat.h.
st_mtime Waktu modifikasi terakhir file.
st_nlink Selalu 1 pada sistem file non-NTFS.
st_rdev Jika perangkat, ; jika tidak, fd0.
st_size Ukuran file dalam byte.

Jika fd mengacu pada perangkat, st_atimebidang , , st_ctimest_mtime, dan st_size tidak bermakna.

Karena Stat.h menggunakan _dev_t jenis , yang didefinisikan dalam Types.h, Anda harus menyertakan Types.h sebelumnya Stat.h dalam kode Anda.

_fstat64, yang menggunakan _stat64 struktur, memungkinkan tanggal pembuatan file dinyatakan hingga 23:59:59, 31 Desember 3000, UTC; sedangkan fungsi lain hanya mewakili tanggal hingga 23:59:59 18 Januari 2038, UTC. Batas bawah rentang tanggal untuk semua fungsi ini adalah Midnight, 1 Januari 1970.

Variasi fungsi ini mendukung jenis waktu 32-bit atau 64-bit dan panjang file 32-bit atau 64-bit. Akhiran numerik pertama (32 atau 64) menunjukkan ukuran jenis waktu yang digunakan; akhiran kedua adalah i32 atau i64, yang menunjukkan apakah ukuran file diwakili sebagai bilangan bulat 32-bit atau 64-bit.

Kecuali _USE_32BIT_TIME_T didefinisikan, _fstat setara dengan _fstat64i32, dan _stat berisi waktu 64-bit. Ketika _USE_32BIT_TIME_T ditentukan, _fstat menggunakan waktu 32-bit, dan _stat berisi waktu 32-bit. Hal yang sama berlaku untuk _fstati64.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Jenis waktu dan variasi jenis panjang file dari _stat

Fungsi _USE_32BIT_TIME_T Didefinisikan? Jenis waktu Jenis panjang file
_fstat Tidak ditentukan 64-bit 32-bit
_fstat Didefinisikan 32-bit 32-bit
_fstat32 Tidak terpengaruh oleh definisi makro 32-bit 32-bit
_fstat64 Tidak terpengaruh oleh definisi makro 64-bit 64-bit
_fstati64 Tidak ditentukan 64-bit 64-bit
_fstati64 Didefinisikan 32-bit 64-bit
_fstat32i64 Tidak terpengaruh oleh definisi makro 32-bit 64-bit
_fstat64i32 Tidak terpengaruh oleh definisi makro 64-bit 32-bit

Persyaratan

Function Header yang diperlukan
_fstat <sys/stat.h> dan <sys/types.h>
_fstat32 <sys/stat.h> dan <sys/types.h>
_fstat64 <sys/stat.h> dan <sys/types.h>
_fstati64 <sys/stat.h> dan <sys/types.h>
_fstat32i64 <sys/stat.h> dan <sys/types.h>
_fstat64i32 <sys/stat.h> dan <sys/types.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

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

Lihat juga

Penanganan file
_access, _waccess
_chmod, _wchmod
_filelength, _filelengthi64
_stat, _wstat fungsi