Computer Security

#15 디렉토리 다루기 (실습) 본문

리눅스 시스템 프로그래밍

#15 디렉토리 다루기 (실습)

쿠리 Kuri 2022. 9. 20. 18:30
반응형

opendir API를 이용해서 디렉토리 내에 파일의 목록을 출력하고, 각 파일의 타입들에 대해 출력하는 프로그램을 만들어 보자.

 

 


1. 기본적인 뼈대를 만들어 주자.

main

 

 

 

 

 


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 형식으로 출력하면 어떤 파일인지 알기 힘드니, 비교해서 스트링을 출력할 수 있는 매크로를 작성하자.

TYPE2STR

 

 

 

 

 


10.while문안에서 파일의 이름과 해당 파일에 타입에 대해 출력 하는 소스코드를 작성하자.

while

 

 

 

 

 


11. closedir(dp) 를이용해 닫아준다.

 

 

 

 

 

 


12. 전체 소스 코드이다.

opendir.c

 

 

 

 

 


13. gcc 명령어를 이용해서 opendir.c 를 컴파일 한 후 실행 시켜준다.

잘 출력 된 것을 확인 할  수 있다!

반응형

'리눅스 시스템 프로그래밍' 카테고리의 다른 글

#17 Memory map (실습)  (0) 2022.09.22
#16 Memory map  (2) 2022.09.21
#14 디렉토리 다루기  (2) 2022.09.19
#13 파일 속성(실습)  (0) 2022.09.18
#12 파일 속성  (0) 2022.09.17
Comments