다음을 통해 공유


_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64_wstati64_wstat32i64_wstat64i32

파일의 상태 정보를 가져옵니다.

구문

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

매개 변수

path
기존 파일 또는 디렉터리의 경로가 포함된 문자열에 대한 포인터입니다.

buffer
결과를 저장하는 구조에 대한 포인터입니다.

반환 값

파일 상태 정보를 가져오는 경우 이러한 함수는 각각 0을 반환합니다. 반환 값 -1은 오류(이 경우 errno 파일 이름 또는 경로를 찾을 수 없음)로 설정된 ENOENT오류를 나타냅니다. EINVAL 의 반환 값은 잘못된 매개 변수를 나타냅니다. 또한 이 경우 errnoEINVAL 로 설정됩니다.

반환 코드에 대한 자세한 내용은 , , 및 를 참조하세요errno._sys_nerr_sys_errlist_doserrno

파일의 날짜 스탬프는 1970년 1월 1일 자정 및 3000년 12월 31일 3000년 12월 31일 23:59:59 이전인 경우 _stat32 _wstat32_USE_32BIT_TIME_T표시될 수 있으며, 이 경우 날짜는 2038년 1월 18일 23:59:59까지만 나타낼 수 있습니다.

설명

_stat 함수는 path 에서 지정한 파일 또는 디렉터리에 대한 정보를 가져와 buffer에서 가리키는 구조에 저장합니다. _stat 는 현재 사용 중인 멀티바이트 코드 페이지에 따라 멀티바이트 문자 시퀀스를 인식하며 멀티바이트 문자열 인수를 자동으로 적절히 처리합니다.

_wstat_stat의 와이드 문자 버전이며, path 에 대한 _wstat 인수는 와이드 문자열입니다. _wstat 멀티 _stat 바이트 문자열을 _wstat 처리하지 않는다는 점을 제외하고 동일하게 동작합니다.

이러한 함수의 변형은 32비트 또는 64비트 시간 형식과 32비트 또는 64비트 파일 길이를 지원합니다. 첫 번째 숫자 접미사(32 또는 64)는 사용된 시간 형식의 크기를 나타내며, 두 번째 접미사( i32 또는 i64)는 파일 크기가 32비트 정수로 표시되는지 아니면 64비트 정수로 표시되는지를 나타냅니다.

_stat는 정의되지 않는 한 _USE_32BIT_TIME_T 64비트 시간을 포함하는 것과 같 _stat64i32struct _stat 으며, 이 경우 이전 동작이 적용 _stat 됩니다. 32비트 시간을 struct _stat 사용하고 32비트 시간을 포함합니다. 이는 _stati64의 경우에도 마찬가지입니다.

참고 항목

_wstat 는 Windows Vista 기호 링크에서 작동하지 않습니다. 이러한 경우 _wstat 는 항상 0의 파일 크기를 보고합니다. _stat 는 바로 가기 링크와 제대로 작동합니다. _stat 함수 패밀리는 Visual Studio 2013 이전 버전에서의 FindFirstFile 대신 Visual Studio 2015에서 CreateFile를 사용합니다. 즉, 슬래시로 끝나는 경로에 있는 _stat은 경로가 디렉터리를 참조하는 경우 성공하며, 이는 errnoENOENT으로 설정한 상태에서 함수에 오류가 발생하기 전과는 대조적입니다.

이 함수는 해당 매개 변수의 유효성을 검사합니다. 둘 중 하나 path 이거나 bufferNULL면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

_stat의 시간 형식 및 파일 길이 형식 변형

함수 정의된 _USE_32BIT_TIME_T 시간 형식 파일 길이 형식
_stat, _wstat 정의되지 않음 64비트 32비트
_stat, _wstat 정의됨 32비트 32비트
_stat32, _wstat32 매크로 정의의 영향을 받지 않음 32비트 32비트
_stat64, _wstat64 매크로 정의의 영향을 받지 않음 64비트 64비트
_stati64, _wstati64 정의되지 않음 64비트 64비트
_stati64, _wstati64 정의됨 32비트 64비트
_stat32i64, _wstat32i64 매크로 정의의 영향을 받지 않음 32비트 64비트
_stat64i32, _wstat64i32 매크로 정의의 영향을 받지 않음 64비트 32비트

일반 텍스트 루틴 매핑

TCHAR.H 루틴 _UNICODE_MBCS 정의되지 않음 정의된 _MBCS 정의된 _UNICODE
_tstat _stat _stat _wstat
_tstat64 _stat64 _stat64 _wstat64
_tstati64 _stati64 _stati64 _wstati64
_tstat32i64 _stat32i64 _stat32i64 _wstat32i64
_tstat64i32 _stat64i32 _stat64i32 _wstat64i32

정의된 SYS\STAT.H구조체에는 _stat 다음 필드가 포함됩니다.

필드 설명
st_gid 파일(UNIX 관련)을 소유하는 그룹의 숫자 식별자입니다. 이 필드는 Windows 시스템에서 항상 0입니다. 리디렉션된 파일은 Windows 파일로 분류됩니다.
st_atime 파일의 마지막 액세스 시간입니다. NTFS에서는 유효하지만, FAT로 포맷한 디스크 드라이브에서는 유효하지 않습니다.
st_ctime 파일 생성 시간입니다. NTFS에서는 유효하지만, FAT로 포맷한 디스크 드라이브에서는 유효하지 않습니다.
st_dev 파일이 포함된 디스크의 드라이브 번호( st_rdev와 동일)입니다.
st_ino 파일(UNIX 관련)의 정보 노드( inode) 수입니다. UNIX 파일 시스템에서 inode 는 파일 날짜 및 시간 스탬프, 권한, 내용 등을 설명합니다. 파일이 서로 하드 링크된 경우 동일한 inode를 공유합니다. 따라서 inode즉, st_ino는 FAT, HPFS 또는 NTFS 파일 시스템 간 차이가 무의미합니다.
st_mode 파일 모드 정보의 비트 마스크입니다. _S_IFDIR 에서 디렉터리를 지정한 경우 path 비트가 설정되며, _S_IFREG 에서 일반 파일 또는 디바이스를 지정한 경우 path 비트가 설정됩니다. 파일의 사용 권한 모드에 따라 사용자 읽기/쓰기 비트가 설정됩니다. 파일 이름 확장명에 따라 사용자 실행 비트가 설정됩니다.
st_mtime 파일의 마지막 수정 시간입니다.
st_nlink NTFS가 아닌 파일 시스템에서 항상 1입니다.
st_rdev 파일이 포함된 디스크의 드라이브 번호( st_dev와 동일)입니다.
st_size 파일 크기(바이트)입니다. 접미사가 있는 변형의 경우 64비트 정수 i64 입니다.
st_uid 파일(UNIX 관련)을 소유하는 사용자의 숫자 식별자입니다. 이 필드는 Windows 시스템에서 항상 0입니다. 리디렉션된 파일은 Windows 파일로 분류됩니다.

path 에서 디바이스를 참조하는 경우 st_size구조의 st_dev, 다양한 시간 필드, st_rdev_stat 필드는 의미가 없습니다. 정의된 형식을 _dev_t 사용하므로 STAT.H 코드에 TYPES.H이전에 STAT.H 포함 TYPES.H 해야 합니다.

요구 사항

루틴에서 반환된 값 필수 헤더 선택적 헤더
_stat, _stat32, _stat64, _stati64, _stat32i64_stat64i32 <sys/types.h> 다음 <sys/stat.h> 실행 <errno.h>
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64_wstat64i32 <sys/types.h> 다음에 오 <sys/stat.h> 거나 <wchar.h> <errno.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

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

참고 항목

파일 처리
_access, _waccess
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64_fstat64i32
_getmbcp
_setmbcp