C readdir() 디렉토리 안에 있는 항목 구하기
opendir()로 열기를 한 디렉토리에 대해, 그 안에 있는 모든 파일과 디렉토리 정보를 구합니다.
- 헤더: dirent.h
- 형태: struct dirent *readdir( DIR *dir)
- 인수: DIR *dir opendir()에서 열기한 디렉토리 정보
- 반환: struct dirent * 성공하면 파일이나 디렉토리 정보를 반환하고, 실패하면 NULL을 반환합니다.
readdir()을 처음 호출하면 opendir()에서 열기를 한 디렉토리 안에 있는 파일 중 첫번째 파일에 대한 정보를 구합니다. 다시 호출하면 두번째 파일에 대한 정보를 구하고, 다시 호출하면 세번째 파일을, .... 계속 호출하면 그 다음 파일의 정보를 반환하다가 더 이상 파일이나 디렉토리가 없다면 NULL을 반환하게 됩니다.
파일 및 디렉토리 정보를 담는 struct dirent는 linux/entry.h 안에 있습니다.
struct dirent {
long d_ino; // inode 번호
__kernel_off_t d_off; // 디렉토리 내에서의 오프셋
unsigned short d_reclen; // 엔트리의 길이
char d_name[256]; // 파일이나 디렉토리 이름
};
C언어 readdir() 함수 예제
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
int main()
{
DIR *dir_info;
struct dirent *dir_entry;
mkdir( "test_A" , 0755); // 실행 파일이 있는 곳에 생성
mkdir( "test_B" , 0755); // 실행 파일이 있는 곳에 생성
dir_info = opendir( "."); // 현재 디렉토리를 열기
if ( NULL != dir_info)
{
while( dir_entry = readdir( dir_info)){ // 디렉토리 안에 있는 모든 파일과 디렉토리 출력
printf( "%s\n", dir_entry->d_name);
}
closedir( dir_info);
}
}
실행 결과
]$ ./a.out
test.c
..
.
test_B
test_A
a.out
]$
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 디렉토리 읽기 위치를 처음으로 돌리기 함수 rewinddir() (0) | 2020.03.15 |
---|---|
C언어 디렉토리 닫기 closedir() (0) | 2020.03.15 |
C언어 디렉토리 열기 함수 opendir() (0) | 2020.03.15 |