_access_s, _waccess_s

파일 읽기/쓰기 권한을 결정합니다. 이러한 함수는 CRT_access_waccess보안 기능에 설명된 대로 보안이 향상된 버전입니다.

구문

errno_t _access_s(
   const char *path,
   int mode
);
errno_t _waccess_s(
   const wchar_t *path,
   int mode
);

매개 변수

path
파일 또는 디렉터리 경로입니다.

mode
권한 설정

반환 값

파일에 지정된 모드가 있으면 각 함수는 0을 반환합니다. 명명된 파일이 없거나 지정된 모드에서 액세스할 수 없는 경우 함수는 오류 코드를 반환합니다. 이 경우 함수는 다음과 같이 집합에서 오류 코드를 반환하고 errno를 같은 값으로 설정합니다.

errno Condition
EACCES 액세스가 거부되었습니다. 파일의 권한 설정은 지정된 액세스를 허용하지 않습니다.
ENOENT 파일 이름 또는 경로를 찾을 수 없습니다.
EINVAL 잘못된 매개 변수입니다.

자세한 내용은 다음을 참조하세요.errno, _doserrno, _sys_errlist_sys_nerr.

설명

파일과 함께 사용할 경우 _access_s 함수는 지정된 파일이 있는지, mode의 값으로 지정한 대로 액세스할 수 있는지를 확인합니다. 디렉터리와 함께 사용할 경우 _access_s는 지정한 디렉터리가 있는지만 확인합니다. Windows 2000 이상 운영 체제에서는 모든 디렉터리에 읽기 및 쓰기 권한이 있습니다.

mode 파일 검사
00 존재만.
02 쓰기 권한.
04 읽기 권한.
06 읽기 및 쓰기 권한.

파일을 읽거나 쓸 수 있는 권한만으로는 파일을 열 수 없습니다. 예를 들어 파일이 다른 프로세스에 의해 잠겨 있으면 _access_s에서 0을 반환해도 해당 파일에 액세스하지 못할 수 있습니다.

_waccess_s_access_s의 와이드 문자 버전이며, _waccess_s에 대한 path 인수는 와이드 문자열입니다. 그렇지 않으면 _waccess_s_access_s 은 동일하게 작동합니다.

이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. path 유효한 모드이거나 modeNULL 지정하지 않으면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 이러한 함수는 errnoEINVAL로 설정하고 EINVAL을 반환합니다.

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

일반 텍스트 루틴 매핑

Tchar.h 루틴 _UNICODE 정의 _MBCS 되지 않음 _MBCS 정의 _UNICODE 정의
_taccess_s _access_s _access_s _waccess_s

요구 사항

루틴에서 반환된 값 필수 헤더 선택적 헤더
_access_s <io.h> <errno.h>
_waccess_s <wchar.h> 또는 <io.h> <errno.h>

예시

이 예제에서는 _access_s를 사용하여 crt_access_s.c라는 파일이 있는지, 쓰기가 허용되는지를 확인합니다.

// crt_access_s.c

#include <io.h>
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    errno_t err = 0;

    // Check for existence.
    if ((err = _access_s( "crt_access_s.c", 0 )) == 0 )
    {
        printf_s( "File crt_access_s.c exists.\n" );

        // Check for write permission.
        if ((err = _access_s( "crt_access_s.c", 2 )) == 0 )
        {
            printf_s( "File crt_access_s.c does have "
                      "write permission.\n" );
        }
        else
        {
            printf_s( "File crt_access_s.c does not have "
                      "write permission.\n" );
        }
    }
    else
    {
        printf_s( "File crt_access_s.c does not exist.\n" );
    }
}
File crt_access_s.c exists.
File crt_access_s.c does not have write permission.

참고 항목

파일 처리
_access, _waccess
_chmod, _wchmod
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
_stat, _wstat 함수