설명

지정한 디렉토리를 열기를 합니다. 디렉토리를 파일처럼 열기를 한다는 것은 디렉토리 내에 파일과 서브 디렉토리를 검색한다는 얘기가 되겠습니다. 즉, 특정 디렉토리 안에 있는 파일과 디렉토리를 검색하기 위해 사용합니다.

헤더 dirent.h
형태 DIR *opendir(const char *name);
인수 char *name 열기 대상 디렉토리
반환 DIR 열기에 성공하면 디렉토로 정보 구조체인 DIR 포인터를 반환하고 실패하면 NULL을 반환합니다.
예제

샘플이 들어 있는 디렉토리에 어떤 파일과 디렉토리가 있는지 검색해 보겠습니다.

예제에서 readdir()은 인수로 받은 디렉토리에 대해, 함수를 호출할 때 마다 디렉토리 안에 있는 파일이나 디렉토리명을 반환합니다. 모든 파일과 디렉토리를 읽어 들이면 NULL을 반환하게 되며, 이름 문자열은 struct dirent에서 d_name에 저장됩니다.

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

int main()
{
   DIR            *dir_info;
   struct dirent  *dir_entry;

   mkdir( "test_A"     , 0755);           // 실행 파일이 있는 곳에 생성
   mkdir( "test_B"     , 0755);           // 실행 파일이 있는 곳에 생성

   dir_info = opendir( ".");              // 현재 디렉토리를 열기
   if ( NULL != dir_info)
   {
      while( dir_entry   = readdir( dir_info))  // 디렉토리 안에 있는 모든 파일과 디렉토리 출력
      {
         printf( "%sn", dir_entry->d_name);
      }
      closedir( dir_info);
   }
}
]$ a.out
test.c
..
.
test_B
test_A
a.out
]$