SCANDIR(3)

이름
scandir, alphasort - 디렉토리에서 해당 항목을 조사한다

사용법
#include <dirent.h>

int scandir(const char *dir, struct dirent ***namelist,
    int (*select)(const struct dirent *),
    int (*compar)(const struct dirent **, const struct dirent **));

int alphasort(const struct dirent **a, const struct dirent **b);

설명
scandir() 함수는 각 디렉토리 항목에 대해 select()를 호출하면서 dir 디렉토리를 조사한다. select()에서 0이 아닌 값을 반환한 항목들은 malloc()을 통해 할당된 문자열에 저장되고, 비교 함수 compar()를 사용한 qsort()에 의해 정렬되고, malloc()를 통해 할당된 namelist 배열에 모아진다. select가 NULL이면 모든 항목이 선택된다.

alphasort() 함수는 디렉토리 항목들을 알파벳 순서로 정렬하기 위해 scandir() 함수의 비교 함수로 사용될 수 있다. 그 함수의 인자는 비교할 두 개의 디렉토리 항목 a와 b이다.

반환값
scandir() 함수는 선택된 디렉토리 항목의 개수를 또는 에러가 발생하면 -1을 반환한다.

alphasort() 함수는 첫번째 인자가 두번째 인자보다 작거나, 같거나, 크거나에 따라 각각 0 보다 작거나, 같거나, 큰 정수를 반환한다.

에러

ENOMEM
    수행을 하기 위한 메모리 부족하다.

호환
BSD 4.3

예제
/* 현재 디렉토리의 파일을 역순으로 출력한다 */
#include <dirent.h>
main(){
    struct dirent **namelist;
    int n;
    n = scandir(".", &namelist, 0, alphasort);
    if (n < 0)
        perror("scandir");
    else {
        while(n--) {
            printf("%s\n", namelist[n]->d_name);
            free(namelist[n]);
        }
        free(namelist);
    }
}

관련 항목
opendir(3), readdir(3), closedir(3), rewinddir(3), telldir(3), seekdir(3).

번역
임종균 <hermes44@secsm.org> 2001년 6월 28일
한글 Manpage 프로젝트 (http://man.kldp.org) 2005년 2월 14일