ACCESS(2)

명칭
access - 파일 또는 패스명의 액세스 허가를 체크한다

프로그램 라이브러리
libc

서식
<unistd.h> int access(const char *path, int mode)

해설
access() 함수는, mode 에 의해 나타난 액세스 허가에 대해 path 그리고 지정되는 파일의 액세스 가능성을 체크합니다. mode 의 값은, 체크되는 액세스 허가 (읽기 허가에 대해서는 R_OK , 기록 허가에 대해서는 W_OK , 실행 / 검색 허가에 대해서는 X_OK) 의 비트 단위의 OR, 또는 존재 시험 F_OK 입니다. 패스명 path 의 모든 원가요소가 액세스 허가에 대해 체크됩니다 (F_OK 도 포함됩니다).

열매 유저 ID 는 실효 유저 ID 대신에 사용되어 열매 그룹 액세스 리스트 (열매 그룹 ID 를 포함한다) 하지만 퍼미션을 검증하기 위해서 실효 ID 대신에 사용됩니다.

프로세스에 적절한 특권이 있어, X_OK 에 붙어 성공을 나타내고 있어도, 실제로는 파일의 실행 허가 비트가 설정되어 있지 않은 것이 있습니다. 같은 것이, R_OK 및 W_OK 에도 해당합니다.

반환값
path 하지만 발견되지 않는 경우, 또는 희망의 액세스 모드가 인정받지 않는 경우, 값 -1 이 돌려주어집니다. 그렇지 않은 경우는, 값 0 이 돌려주어집니다.

에러
파일에의 액세스는 다음의 경우에 거절됩니다.

[ENOTDIR]
    패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

[ENAMETOOLONG]
    패스명의 원가요소가 255 캐릭터를 넘고 있는지, 또는 패스명 전체가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    지정된 파일이 존재하지 않습니다.

[ELOOP]
    패스명을 변환할 경우에 검출된 기호 연결이 너무 많습니다.

[EROFS]
    읽기 전용 파일 시스템상의 파일에 대해 기록 액세스가 요구되었습니다.

[ETXTBSY]
    현시점에서 실행중의 순수한 수속 (공유 텍스트) 파일에 대해 기록 액세스가 요구되고 있습니다.

[EACCES]
    파일 모드의 허가 비트가 요구된 액세스를 허용 하지 않는지, 또는 패스의 원가요소에 대해 검색 허가가 거절되고 있습니다. 파일의 소유자는 ``소유자 (owner)''의 읽기, 기록, 및 실행의 모드 비트에 따라 체크된 허가를 가집니다. 소유자 이외의 파일의 그룹의 멤버는 ``그룹 (group)''모드 비트에 따라서 체크된 허가를 가져, 다른 모든 것은 ``그 외 (other)''모드 비트에 따라서 체크된 허가를 가집니다.

[EFAULT]
    path (은)는, 프로세스에 할당할 수 있었던 address 공간의 범위외를 가리키고 있습니다.

[EIO]
    파일 시스템에 읽고 쓰기하고 있는 동안에 입출력 에러가 발생했습니다.

관련 항목
chmod(2), stat(2)

표준
access() 함수는 p1003.1-90 에 준거하고 있습니다.

경고
access() (은)는, 보안 홀이 될 가능성이 있어, 결코 사용하지 않게 해 주세요.

역사
access() 함수는 AT&T UNIX 그리고 등장했습니다.