_fstat、_fstat32、_fstat64、_fstati64、_fstat32i64、_fstat64i32_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

開いているファイルに関する情報を取得します。Gets information about an open file.

構文Syntax

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

パラメーターParameters

スクリプターfd
開いているファイルのファイル記述子。File descriptor of the open file.

格納buffer
結果を格納する構造体へのポインター。Pointer to the structure to store results.

戻り値Return Value

ファイルのステータス情報が取得されると、0 を返します。Returns 0 if the file-status information is obtained. 戻り値-1 はエラーを示します。A return value of -1 indicates an error. ファイル記述子が無効であるか、 バッファーNULL の場合は、「 パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If the file descriptor is invalid or buffer is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、 errno は、無効なファイル記述子の場合は EBADF に、バッファーNULL の場合は EINVAL に設定されます。If execution is allowed to continue, errno is set to EBADF, in the case of an invalid file descriptor, or to EINVAL, if buffer is NULL.

解説Remarks

_Fstat 関数は、 fd に関連付けられている開いているファイルに関する情報を取得し、 buffer によって示される構造体に格納します。The _fstat function obtains information about the open file associated with fd and stores it in the structure pointed to by buffer. _Stat 構造体には、次のフィールドが含まれています。The _stat structure, defined in SYS\Stat.h, contains the following fields.

フィールドField 意味Meaning
st_atimest_atime ファイルの最後のアクセスの時間。Time of the last file access.
st_ctimest_ctime ファイルの作成の時間。Time of the creation of the file.
st_devst_dev デバイスの場合は、 fd の場合はそれ以外の場合は0です。If a device, fd; otherwise 0.
st_modest_mode ファイル モード情報のビット マスク。Bit mask for file-mode information. _S_IFCHR ビットは、 fd がデバイスを参照する場合に設定されます。The _S_IFCHR bit is set if fd refers to a device. Fd が通常のファイルを参照している場合、 _S_IFREG ビットが設定されます。The _S_IFREG bit is set if fd refers to an ordinary file. 読み取り/書き込みのビットは、ファイルのアクセス許可モードに応じて設定されます。The read/write bits are set according to the file's permission mode. _S_IFCHR およびその他の定数は、sysh で定義されています。_S_IFCHR and other constants are defined in SYS\Stat.h.
st_mtimest_mtime ファイルの最終変更時刻。Time of the last modification of the file.
st_nlinkst_nlink 非 NTFS ファイル システムでは常に 1 です。Always 1 on non-NTFS file systems.
st_rdevst_rdev デバイスの場合は、 fd の場合はそれ以外の場合は0です。If a device, fd; otherwise 0.
st_sizest_size ファイルのサイズ (バイト単位)。Size of the file in bytes.

Fd がデバイスを参照している場合、 st_atimest_ctimest_mtime、および st_size の各フィールドには意味がありません。If fd refers to a device, the st_atime, st_ctime, st_mtime, and st_size fields are not meaningful.

Stat.h は Types.h で定義される _dev_t 型を使用するため、コードで Stat.h の前に Types.h を組み込む必要があります。Because Stat.h uses the _dev_t type, which is defined in Types.h, you must include Types.h before Stat.h in your code.

__stat64 構造体を使用する _fstat64 では、ファイル作成日を23:59:59 年12月 31 3000 日 (UTC) で表すことができます。一方、他の関数は、23:59:59 年1月18日から2038日までの日付のみを表します。_fstat64, which uses the __stat64 structure, allows file-creation dates to be expressed up through 23:59:59, December 31, 3000, UTC; whereas the other functions only represent dates through 23:59:59 January 18, 2038, UTC. これらの関数の日付範囲の下限は、いずれも 1970 年 1 月 1 日の午前 0 時です。Midnight, January 1, 1970, is the lower bound of the date range for all these functions.

これらの関数のバリエーションは、32 ビットや 64 ビットの時刻型と、32 ビットや 64 ビットのファイル長をサポートします。Variations of these functions support 32-bit or 64-bit time types and 32-bit or 64-bit file lengths. 最初の数字のサフィックス (32 または 64) は、使用された時間の種類のサイズを示します。2番目のサフィックスは、 i32 または i64 のいずれかで、ファイルサイズが32ビットまたは64ビットの整数で表されるかどうかを示します。The first numerical suffix (32 or 64) indicates the size of the time type used; the second suffix is either i32 or i64, indicating whether the file size is represented as a 32-bit or 64-bit integer.

_fstat_fstat64i32 に相当し、 struct _stat には64ビットの時刻が含まれています。_fstat is equivalent to _fstat64i32, and struct _stat contains a 64-bit time. これは _USE_32BIT_TIME_T が定義されていない場合に当てはまります。この場合、以前の動作が有効になります。 _fstat では32ビットの時刻が使用 struct され、 _stat には32ビットの時刻が含まれます。This is true unless _USE_32BIT_TIME_T is defined, in which case the old behavior is in effect; _fstat uses a 32-bit time, and struct _stat contains a 32-bit time. _Fstati64 にも同じことが当てはまります。The same is true for _fstati64.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

_stat の時刻型とファイル長型のバリエーションTime Type and File Length Type Variations of _stat

関数Functions _USE_32BIT_TIME_T が定義されているか_USE_32BIT_TIME_T defined? 時刻型Time type ファイル長型File length type
_fstat_fstat 未定義Not defined 64 ビット64-bit 32 ビット32-bit
_fstat_fstat 定義済みDefined 32 ビット32-bit 32 ビット32-bit
_fstat32_fstat32 マクロ定義の影響を受けないNot affected by the macro definition 32 ビット32-bit 32 ビット32-bit
_fstat64_fstat64 マクロ定義の影響を受けないNot affected by the macro definition 64 ビット64-bit 64 ビット64-bit
_fstati64_fstati64 未定義Not defined 64 ビット64-bit 64 ビット64-bit
_fstati64_fstati64 定義済みDefined 32 ビット32-bit 64 ビット64-bit
_fstat32i64_fstat32i64 マクロ定義の影響を受けないNot affected by the macro definition 32 ビット32-bit 64 ビット64-bit
_fstat64i32_fstat64i32 マクロ定義の影響を受けないNot affected by the macro definition 64 ビット64-bit 32 ビット32-bit

要件Requirements

機能Function 必須ヘッダーRequired header
_fstat_fstat <sys/stat.h> および <sys/types.h><sys/stat.h> and <sys/types.h>
_fstat32_fstat32 <sys/stat.h> および <sys/types.h><sys/stat.h> and <sys/types.h>
_fstat64_fstat64 <sys/stat.h> および <sys/types.h><sys/stat.h> and <sys/types.h>
_fstati64_fstati64 <sys/stat.h> および <sys/types.h><sys/stat.h> and <sys/types.h>
_fstat32i64_fstat32i64 <sys/stat.h> および <sys/types.h><sys/stat.h> and <sys/types.h>
_fstat64i32_fstat64i32 <sys/stat.h> および <sys/types.h><sys/stat.h> and <sys/types.h>

互換性について詳しくは、「 Compatibility」をご覧ください。For more compatibility information, see Compatibility.

Example

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

関連項目See also

ファイルの処理File Handling
_access、_waccess_access, _waccess
_chmod、_wchmod_chmod, _wchmod
_filelength、_filelengthi64_filelength, _filelengthi64
_stat、_wstat 関数_stat, _wstat Functions