Manpages

이 름

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() 함 수 의 비 교 함 수 로 사 용 될 수 있 다 . 그 함 수 의 인 자 는 비 교 할 두 개 의 디 렉 토 리 항 목 ab이 다 .

반 환 값

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 [AT] secsm.org> 2001년 6월 28일
한 글 Manpage 프 로 젝 트 (http://man.kldp.org) 2005년 2월 14일