리눅스 시스템 프로그래밍
#15 디렉토리 다루기 (실습)
쿠리 Kuri
2022. 9. 20. 18:30
반응형
opendir API를 이용해서 디렉토리 내에 파일의 목록을 출력하고, 각 파일의 타입들에 대해 출력하는 프로그램을 만들어 보자.
1. 기본적인 뼈대를 만들어 주자.
2. opendir API를 이용해 디렉토리 스트림포인터를 얻자.
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
3. opendir 반환값을 받아올 DIR 포인터를 선언한다.
4. dp = opendir(".") -> 현재 디렉토리(.) 를 오픈한다.
5. 예외 처리 해준다.
6. 디렉토리내에 파일 목록을 읽는 API인 readdir 을 이용한다.
struct dirent *readdir(DIR *dirp);
7. readdir 반환 값을 받아 올 struct dirent *entry 를 이용해 struct 포인터를 선언해준다.
8. entry = readdir(dp) 로 호출해준다. (반복문을 수행해야한다.)
--> readdir 에 실패했을때도 null 포인터를 리턴하지만, 디렉토리 마지막 파일을 읽고난 뒤에도 null 포인터를 리턴한다.
--> while 문을 사용한다.
9. while문안에서 파일의 이름과 해당 파일에 타입에 대해 출력 해야한다.
값을 int 형식으로 출력하면 어떤 파일인지 알기 힘드니, 비교해서 스트링을 출력할 수 있는 매크로를 작성하자.
10.while문안에서 파일의 이름과 해당 파일에 타입에 대해 출력 하는 소스코드를 작성하자.
11. closedir(dp) 를이용해 닫아준다.
12. 전체 소스 코드이다.
13. gcc 명령어를 이용해서 opendir.c 를 컴파일 한 후 실행 시켜준다.
잘 출력 된 것을 확인 할 수 있다!
반응형