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