Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=access">access</a>(2)

1장. access(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

파일의 사용자 권한을 체크하기 위해서 사용하지만, 보통은 파일이 존재하는지를 간단히 체크하기 위해서 주로 사용된다. access 를 사용하지 않을경우 open(2) 등의 함수를 이용해야 하는데, 단지 파일의 존재유무만을 파악하기 위해서 open 을 사용하는것은 너무 번거롭기 때문이다.


1.1절. 사용법

#include <unistd.h>

int access(const char *pathname, int mode);
		


1.2절. 설명

acess 는 프로세스가 pathname 으로 지정된 파일에 대해서 읽기, 쓰기, 실행권한을 가지고 있는지 체크한다. 만약 pathname 파일이 심볼릭링크된 파일이라면 원본 파일을 체크한다.

mode 는 R_OK, W_OK, X_OK, F_OK 로 구성된다.

R_OK 는 읽기, W_OK 는 쓰기, X_OK 는 실행 여부를 체크하며 F_OK 는 파일의 존재유무를 체크한다.


1.3절. 반환값

권한이 성공적으로 체크되었다면, 0 그렇지 않았다면 -1 이 반환되며, 적당한 errno 값이 세팅된다.


1.4절. 에러

EACCESS

요구된 접근이 파일에 의해 거절되거나, 경로명안의 어느 한 디렉토리에 의해 거절되었을경우

EROFS

read-only 인 파일시스템에 의해서 쓰기권한이 거절되었을경우

ENOENT

경로명의 디렉토리가 없거나, 심볼릭 링크가 깨져있을때.

ENOENT

경로명의 디렉토리가 없거나, 심볼릭 링크가 깨져있을때.

ENODEV

경로명이 장치파일을 참고하고, 일치하는 장치가 없을때.

EROFS

경로명이 read-only 파일시스템을 참조하면서, 쓰기로 열려고 할때.

EROFS

경로명이 read-only 파일시스템을 참조하면서, 쓰기로 열려고 할때.

EFAULT

경로명이 접근할수 없는 주소강간을 가르킬때

EINVAL

모드가 적절하지 않을때

ENAMETOOLONG

경로명이 너무 길때

ENOENT

경로명의 디렉토리로 접근가능하지만 존재하지 않거나 깨진 링크일때

ENOTDIR

경로명의 디렉토리가 존재하지 않을때


1.5절. 예제

/usr/test/cat 파일이 존재하는지 확인할때

#include <unistd.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    if (access(argv[1], F_OK) != 0)
        perror("파일이 존재하지 않음 : ");
    else
        printf("파일 존재함\n");
}