_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
의 반환 값은 잘못된 매개 변수를 나타냅니다. 또한 이 경우 errno
는 EINVAL
로 설정됩니다.
반환 코드에 대한 자세한 내용은 , , 및 를 참조하세요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비트 시간을 포함하는 것과 같 _stat64i32
struct _stat
으며, 이 경우 이전 동작이 적용 _stat
됩니다. 32비트 시간을 struct _stat
사용하고 32비트 시간을 포함합니다. 이는 _stati64
의 경우에도 마찬가지입니다.
참고 항목
_wstat
는 Windows Vista 기호 링크에서 작동하지 않습니다. 이러한 경우 _wstat
는 항상 0의 파일 크기를 보고합니다. _stat
는 바로 가기 링크와 제대로 작동합니다.
_stat
함수 패밀리는 Visual Studio 2013 이전 버전에서의 FindFirstFile
대신 Visual Studio 2015에서 CreateFile
를 사용합니다. 즉, 슬래시로 끝나는 경로에 있는 _stat
은 경로가 디렉터리를 참조하는 경우 성공하며, 이는 errno
를 ENOENT
으로 설정한 상태에서 함수에 오류가 발생하기 전과는 대조적입니다.
이 함수는 해당 매개 변수의 유효성을 검사합니다. 둘 중 하나 path
이거나 buffer
이NULL
면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 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