DIRECTORY(3)

명칭
opendir, readdir, readdir_r, telldir, seekdir, rewinddir, closedir, dirfd - 디렉토리 조작

프로그램 라이브러리
libc

서식
<sys/types.h> <dirent.h> DIR * opendir(const char *filename) struct dirent * readdir(DIR *dirp) int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) long telldir(DIR *dirp) void seekdir(DIR *dirp, long loc) void rewinddir(DIR *dirp) int closedir(DIR *dirp) int dirfd(DIR *dirp)

해설
opendir() 함수는, filename 그리고 지정된 디렉토리를 열어, 디렉토리 스트림 (을)를 거기에 대응시켜, 후속의 조작으로 디렉토리 스트림 (을)를 식별하는데 사용하는 포인터를 돌려줍니다. filename 에 액세스 할 수 없는 경우, 또는 모든 것을 보관 유지하는데 충분한 메모리를 malloc(3) 할 수 없는 경우는, 포인터 NULL 하지만 돌려주어집니다.

readdir() 함수는, 다음의 디렉토리 엔트리를 가리키는 포인터를 돌려줍니다. 이 함수는, 디렉토리의 말미에 도달하는지, 또는 무효인 seekdir() 조작을 검출하면(자) NULL (을)를 돌려줍니다.

readdir_r() (은)는, readdir() (와)과 같은 기능을 제공합니다만, 호출원래는 결과를 격납하기 위한 디렉토리 entry 버퍼를 제공하지 않으면 안됩니다. 읽기가 성공하면(자) result 하 entry (을)를 가리켜, 디렉토리의 말미에 이르면(자) result 하 NULL (으)로 설정됩니다. readdir_r() (은)는, 성공했을 경우 0 을 돌려주어, 그렇지 않으면 실패를 나타내는 에러 넘을 돌려줍니다.

telldir() 함수는, 지정되었다 디렉토리 스트림 에 관련지을 수 있고 있는 현재의 위치를 돌려줍니다. telldir() 하지만 돌려주는 값이 유효한 것은, 그 값이 나타난 원의 DIR 포인터 dirp 하지만 살아 있는 동안만입니다. 디렉토리가 닫혀지고 다시 열리면(자), telldir() 하지만 돌려준 이전의 값은 이미 유효하지는 않습니다.

seekdir() 함수는, 그 디렉토리 스트림 에 대한 다음의 readdir() 조작의 위치를 설정합니다. 새로운 위치는, 그 디렉토리 스트림 (와)과 관련지을 수 있고 있는 것으로, telldir() 조작이 실행되었을 때에 돌려주어지는 것입니다.

rewinddir() 함수는, 지정되었다 디렉토리 스트림 의 위치를 그 디렉토리의 선두에 되돌립니다.

closedir() 함수는, 지정되었다 디렉토리 스트림 (을)를 닫아 dirp 포인터에 관련지을 수 있었던 구조체를 해방합니다. 처리가 성공했을 경우는 0 을 돌려줍니다. 처리가 실패하면(자) -1 가 돌려주어져 에러를 시 위해(때문에) 글로벌 변수 errno 하지만 설정됩니다.

dirfd() 함수는, 지정되었다 디렉토리 스트림 에 관련지을 수 있었던 정수의 파일 기술자를 돌려줍니다. open(2) (을)를 참조해 주세요.

디렉토리에서 엔트리 ``name''를 검색하는 샘플 코드는 다음과 같습니다.

    len = strlen(name);
    dirp = opendir(". ");
    while ((dp = readdir(dirp)) ! = NULL)
            if (dp->d_namlen == len && ! strcmp(dp->d_name, name)) {
                    (void) closedir(dirp);
                    return FOUND;
            }
    (void) closedir(dirp);
    return NOT_FOUND;

관련 항목
close(2), lseek(2), open(2), read(2), dir(5)

역사
opendir(), readdir(), telldir(), seekdir(), rewinddir(), closedir() 및 dirfd() 의 각 함수는 4.2BSD 그리고 등장했습니다.