SCANDIR(3)

명칭
scandir, alphasort - 디렉토리를 주사 한다

프로그램 라이브러리
libc

서식
<sys/types.h> <dirent.h> int scandir(const char *dirname, struct dirent ***namelist, int \*(lp*select\*(rp\*(lpstruct dirent *\*(rp, int \*(lp*compar\*(rp\*(lpconst void *, const void *\*(rp) int alphasort(const void *d1, const void *d2)

해설
scandir() 함수는 디렉토리 dirname (을)를 읽어내, malloc(3) (을)를 사용해 디렉토리 엔트리를 가리키는 포인터의 배열을 작성합니다. 그리고 배열내의 엔트리의 수를 돌려줍니다. 디렉토리 엔트리의 배열을 가리키는 포인터는, namelist 하지만 참조하는 위치에 보존됩니다.

select 파라미터는, 어느 엔트리를 배열에 넣는지를 선택하기 위해서 scandir() 에 의해 불려 가는, 유저 정의 써브루틴을 가리키는 포인터입니다. 선택 routine에는 디렉토리 엔트리를 가리키는 포인터가 건네받습니다. 또, 디렉토리 엔트리를 배열에 넣는 경우는 비 0 의 값을 돌려주지 않으면 안됩니다. select 하지만 NULL 의 경우, 모든 디렉토리 엔트리를 집어 넣을 수 있습니다.

compar 파라미터는, 유저 정의 써브루틴을 가리키는 포인터이며, 이 써브루틴은 완성한 배열을 정렬 하기 위해서 qsort(3) 에게 건네집니다. 이 포인터가 NULL 의 경우, 배열은 정렬 되지 않습니다.

alphasort() 함수는, compar 파라미터에 사용할 수 있는 routine로, 배열을 알파벳순서에 정렬 합니다.

배열용으로 할당메모리를 free(3) 그리고 할당 해제할 수 있습니다. 그 경우, 배열내의 각 포인터를 해방하고 나서, 배열 자체를 해방해 주세요.

진단
디렉토리가 읽어내용으로 열지 않는 경우, 또는 malloc(3) 하지만 모든 데이터 구조를 보관 유지하는데 충분한 메모리를 할당하고 할 수 없는 경우는 -1 (을)를 돌려줍니다.

관련 항목
directory(3), malloc(3), qsort(3), dir(5)

역사
scandir() (와)과 alphasort() 함수는 4.2BSD 그리고 등장했습니다.