개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.05 06:07

opendir 함수와 EACCES 오류에 대한 질문

목록
  • 리팩토링광 11시간 전 2025.08.05 06:07 새글
  • 2
    1
제가 공부 중인 운영체제와 C 언어에서 opendir 함수를 사용하여 디렉토리를 열려고 하는데, EACCES 오류가 발생합니다.

1. opendir 함수는 디렉토리를 열기 위해 사용하는 함수입니다. 하지만 EACCES 오류가 발생하면 디렉토리를 열 수 없습니다.
2. EACCES 오류는 권한 오류로, 디렉토리에 접근할 권한이 없습니다.
3. 이 오류를 해결하기 위해, 디렉토리의 권한을 변경하거나, 현재 사용자에게 디렉토리에 접근할 수 있는 권한을 부여해야 합니다.

제가 사용하고 있는 운영체제는 Linux입니다.
제가 사용하고 있는 C 언어의 버전은 GCC 9.3입니다.

opendir 함수를 사용할 때, 디렉토리 경로를 지정할 때, 어떤 형식으로 지정해야 하는지 알려주세요.
또한, EACCES 오류가 발생했을 때, 디렉토리의 권한을 변경하는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  11시간 전



    opendir 함수를 사용할 때, 디렉토리 경로를 지정할 때는 절대 경로 또는 상대 경로를 사용할 수 있습니다. 절대 경로는 루트 디렉토리부터 시작하여 디렉토리의 위치를 지정하는 방법입니다. 상대 경로는 현재 작업 디렉토리부터 시작하여 디렉토리의 위치를 지정하는 방법입니다.

    예를 들어, 현재 작업 디렉토리가 `/home/user` 인 경우, 절대 경로로 `/home/user/mydir`를 지정할 수 있고, 상대 경로로 `./mydir` 또는 `../mydir`를 지정할 수 있습니다.

    EACCES 오류가 발생했을 때, 디렉토리의 권한을 변경하는 방법은 다음과 같습니다.

    1. `chmod` 명령어를 사용하여 디렉토리의 권한을 변경할 수 있습니다. 예를 들어, `chmod 755 mydir` 명령어를 사용하여 `mydir` 디렉토리의 권한을 변경할 수 있습니다.
    2. `chown` 명령어를 사용하여 디렉토리의 소유자를 변경할 수 있습니다. 예를 들어, `chown user:group mydir` 명령어를 사용하여 `mydir` 디렉토리의 소유자를 변경할 수 있습니다.
    3. `chmod` 명령어를 사용하여 디렉토리의 권한을 변경할 수 있습니다. 예를 들어, `chmod +x mydir` 명령어를 사용하여 `mydir` 디렉토리의 실행 권한을 부여할 수 있습니다.

    opendir 함수를 사용할 때, 디렉토리 경로를 지정할 때는 다음 예제를 참고할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        DIR *dir;
    
        struct dirent *ent;
    
    
    
        // 절대 경로를 사용하여 디렉토리 열기
    
        dir = opendir("/home/user/mydir");
    
        if (dir == NULL) {
    
            perror("opendir");
    
            exit(EXIT_FAILURE);
    
        }
    
    
    
        // 상대 경로를 사용하여 디렉토리 열기
    
        dir = opendir("./mydir");
    
        if (dir == NULL) {
    
            perror("opendir");
    
            exit(EXIT_FAILURE);
    
        }
    
    
    
        // 디렉토리 열기
    
        dir = opendir(".");
    
        if (dir == NULL) {
    
            perror("opendir");
    
            exit(EXIT_FAILURE);
    
        }
    
    
    
        // 디렉토리 열기
    
        dir = opendir("/home/user");
    
        if (dir == NULL) {
    
            perror("opendir");
    
            exit(EXIT_FAILURE);
    
        }
    
    
    
        // 디렉토리 열기
    
        dir = opendir("..");
    
        if (dir == NULL) {
    
            perror("opendir");
    
            exit(EXIT_FAILURE);
    
        }
    
    
    
        closedir(dir);
    
        return 0;
    
    }
    
    


    EACCES 오류가 발생했을 때, 디렉토리의 권한을 변경하는 방법은 다음과 같습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        // 디렉토리 권한 변경
    
        chmod("mydir", 0755);
    
    
    
        // 디렉토리 소유자 변경
    
        chown("mydir", 1000, 1000);
    
    
    
        // 디렉토리 실행 권한 부여
    
        chmod("mydir", 0755 | S_IXUSR);
    
    
    
        return 0;
    
    }
    
    

    2025-08-05 06:09

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 41,633건 / 5 페이지

검색

게시물 검색