_stat, _wstat 함수
파일에서 상태 정보를 얻기
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(str
const char *path,
struct _stat32i64 *buffer
);
int _stat64i32(str
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 로 설정됩니다.
참고
만일 path 가 디렉토리의 위치를 포함하는 경우, 이것은 후행 백슬래쉬를 포함할 수 없습니다.이런 경우, -1이 반환되고 errno 이 ENOENT 로 설정될 것입니다.
이러한 오류 코드 및 기타 오류 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr 을 참조하십시오.
이것은 1970년 1월 1일 자정과 3000년 12월 31일 23:59:59 (UTC)전사이를 파일의 날짜 스탬프를 통해 나타낼 수 있고 만일 _stat32 또는 _wstat32 를 사용하거나 _USE_32BIT_TIME_T 로 정의된 경우에는 오직 2038 년 1 월 19 일 03:14:07 까지만 표현될 수 있습니다.
설명
_stat 함수는 path 로 지정된 디렉터리나 파일에 관한 정보를 얻고 이것을 buffer 로 지정된 구조에 저장합니다. _stat 는 최근에 사용한 멀티 바이트 코드 페이지에 따라서 멀티 바이트 문자 시퀀스를 인식하는 멀티 바이트 문자 문자열 인수를 자동으로 적절하게 처리 합니다.
_wstat는 _stat의 와이드 문자 버전이며, _wstat의 path 인수는 와이드 문자 문자열입니다. _wstat 와 _stat 은 _wstat 가 멀티 바이트 문자의 문자열을 처리하지 않는 것을 제외하고 동일하게 작동합니다.
이러한 함수의 변형 시간은 32 비트 또는 64 비트 형식과 32 비트 또는 64 비트 길이를 지원합니다. 첫 번째 숫자 접미사 (32 또는 64) 는 사용 시간 형식의 크기를 나타내고 둘째 접미사는 파일 길이가 32비트 또는 64 비트 정수로 표시되는 지를 알려주는 i32 또는 i64 입니다.
_stat 는 _stat64i32 와 동일하고 struct _stat 는 64비트 시간을 포함합니다. _USE_32BIT_TIME_T 가 정의 되지 않는 한 이것은 사실입니다. 오랜 동작도 영향을 받습니다. _stat 는 32비트 시간을 사용하고 struct _stat 는 32비트 시간을 포함합니다. 이는 _stati64 의 경우에도 마찬가지 입니다.
참고
_wstat 는 Windows Vista 심볼 링크를 사용하여 작동하지 않습니다.이러한 경우, _wstat 는 항상 0의 파일크기를 나타낼 것입니다._stat 는 심볼 링크를 사용하여 올바르게 작동합니다.
이 함수는 해당 매개 변수의 유효성을 검사합니다. 만일 path 와 buffer 둘 중 하나가 NULL 이라면, 매개 변수 유효성 검사 에 설명된 것처럼 잘못된 매개변수 처리기가 호출됩니다.
_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 |
_stat 구조체는 SYS\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
모드 파일 정보에 대한 비트 마스크입니다. 만일 path 가 디렉터리를 지정한다면, _S_IFDIR 비트가 설정됩니다; 만일 path 가 일반파일또는 장치를 지정한다면, _S_IFREG 비트가 설정됩니다. 사용자 읽기/쓰기비트들은 파일의 권한 모드에 따라 설정됩니다; 사용자 실행 비트는 파일이름의 확장명에 따라 설정됩니다.st_mtime
파일을 마지막으로 수정한 시간입니다.st_nlink
NTFS가 아닌 파일 시스템에서 항상 1입니다.st_rdev
디스크의 드라이브 번호는 이 파일( st_dev와 같은)을 포함합니다.st_size
바이트 단위에서 파일의 크기입니다; i64 접미사 **.**를 사용하여 변화하는 64비트 정수형입니다.st_uid
사용자가 소유한 파일(UNIX 전용) 의 숫자식별자입니다. 이 필드는 Windows 시스템에서 항상 0이 됩니다. 리디렉션된 파일 Windows 파일로 분류됩니다.
만일 path 가 장치에 조회하는 경우, 다양한 시간 필드들, st_size, st_dev 와 st_rdev 필드들은 _stat 구조체에서 의미를 지니지 않습니다. STAT.H 가 TYPES.H 에 정의된 _dev_t 형식을 사용하기 때문에 반드시 STAT.H 를 코드에 사용하기 전에 TYPES.H를 포함해야 합니다.
요구 사항
루틴 |
필수 헤더 |
선택적 헤더 |
---|---|---|
_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32 |
<sys/stat.h> 다음에 <sys/types.h> 입니다. |
<<errno.h>> |
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32 |
<sys/stat.h> 또는 <wchar.h> 다음에 <sys/types.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 );
}
}
해당 .NET Framework 항목
참고 항목
참조
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32