seekdir(3)

#include <dirent.h>

void seekdir(DIR *dirp, long loc);

다음에 읽을 디렉토리 특정 위치로 이동합니다. 디렉토리 정보를 읽다가 현재 위치로 되돌아와서 다시 처리해야 할 경우에 주로 사용하며, 현재 위치는 telldir(3)를 통하여 저장해 두어야 합니다. seekdir(3)은 파일처리에서의 fseek(3)나 lseek(2)와 비슷한 기능입니다.

 

파라미터

dirp
    -  opendir(3) 또는 fdopendir(3)을 통하여 생성된 DIR *
loc
    - directory에서 다음 정보를 읽을 위치를 지정합니다.
    - 반드시 telldir(3)이 return한 값으로 설정해야 합니다.

 

RETURN

없음

 

 


활용 예제

 

Sample

#include <stdio.h>
#include <string.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];
    long           location;

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

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

    location = 0L;

    /* 디렉토리의 처음부터 파일 또는 디렉토리명을 순서대로 한개씩 읽습니다. */
    while((file = readdir(dir_ptr)) != NULL) 
    {
        if(strcmp(file->d_name, "myfile.txt") == 0) {
            location = telldir(dir_ptr);
        }
        printf("%s\n", file->d_name);
    }

    seekdir(dir_ptr, location);

    /* myfile.txt 파일 다음부터 처리를 다시 함... */

    //......

    /* open된 directory 정보를 close 합니다. */

    closedir(dir_ptr);

}

 


see also :

    File 속성 정보 및 파일 관리 Library

    Directory 정보 조회 및 관리 Library

    System Call File I/O Library

    Stream File I/O Library

 

 

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요