rewinddir(3)

#include <sys/types.h>
#include <dirent.h>

void rewinddir(DIR *dirp);

readdir(3), seekdir(3) 등으로 디렉토리 정보를 읽는 위치가 변경된 것을 opendir(3)한 직후처럼 처음 위치로 이동시킵니다. rewinddir(3)은 fopen(3)함수로 open한 FILE *의 rewind(3)와 비슷한 기능으로 rewind(3)는 파일의 읽는 위치를 파일의 처음으로 돌리는 반면, rewinddir(3)은 directory 정보를 읽는 위치는 처음으로 돌립니다.

 

 

파라미터

dirp
    - opendir(3) 또는 fdopendir(3)을 통하여 생성된 DIR *

 

RETURN

없음

 


활용 예제

 

Sample) directory에 대해서 처음부터 처리를 2회 이상 해야 하는 경우

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h> 


int main(int argc, char **argv)
{
    DIR           *dir_ptr = NULL;
    struct dirent *file    = NULL;
    char           home[1024];

    strncpy(home, getenv("HOME"), sizeof(home));

    /* 목록을 읽을 디렉토리명으로 DIR *를 return 받습니다. */
    if((dir_ptr = opendir(home)) == NULL) 
    {
        fprintf(stderr, "%s directory 정보를 읽을 수 없습니다.\n", home);
        return -1;
    }

    /* 디렉토리의 처음부터 파일 또는 디렉토리명을 순서대로 한개씩 읽습니다. */
    while((file = readdir(dir_ptr)) != NULL) 
    {
        /*
        *   struct dirent *의 구조체에서 d_name 이외에는 
        *   시스템마다 항목이 없을 수 있으므로 무시하고 이름만 사용합니다.
        */

        printf("%s\n", file->d_name);
    }

    /* directory 읽기 위치를 처음으로 이동 시킵니다. */
    rewinddir(dir_ptr);
    
    while((file = readdir(dir_ptr)) != NULL) 
    {
        /* 처음부터 다른 처리를 하는 로직 ....*/
    }
    
    /* open된 directory 정보를 close 합니다. */
    closedir(dir_ptr);
    
    return 0;
}

 


see also :

    File 속성 정보 및 파일 관리 Library

    Directory 정보 조회 및 관리 Library

    System Call File I/O Library

    Stream File I/O Library

 

 

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요