다음을 통해 공유


_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 항목

참고 항목

참조

파일 처리

_access, _waccess

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_getmbcp

_setmbcp