모든 파일 이름과 inode 번호를 출력하는 프로그램[C,Linux]
- 프로그래밍/리눅스
- 2019. 6. 17.
250x250
모든 파일 이름과 inode 번호를 출력하는 프로그램[C, Linux]
안녕하세요.
오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다.
- 특정 파일/디렉토리 명을 argv[]로 넘겨준다.
- argv[]로 넘겨받은 폴더의 모든 파일 이름을 출력
- argv[]로 넘겨받은 폴더의 모든 inode 번호를 출력
코드
코드는 아래와 같습니다.
코드 파일은 깃허브에서 다운받으실 수 있습니다.
https://github.com/ykarr/linux/blob/master/inodename.c
실행
위의 코드를 컴파일해서 실행해보겠습니다.
아래는 실행했을 때 사진입니다.
아래 사진처럼 argv로 넘겨준 html이라는 폴더의 내용이 출력되는 것을 확인할 수 있습니다.
확인을 위해서 사용한 폴더를 들어가보겠습니다.
대충 봐도 다 출력이 잘 된 것 같네요 ㅎㅎ.
주요 코드 설명
위의 코드에서 DIR함수는 *dp디렉토리 포인터를 선언합니다.
폴더의 이름과 inode도 출력하기 위해서 struct dirent도 선언합니다.
dp=opendir(argv[1])로 폴더를 열어줍니다.(폴더가 존재하지 않는다면 오류 메시지를 출력하고 프로그램이 종료됩니다.)
이제 while문 안에 readdir을 넣어서 읽어올 파일이 없을 때까지 while문을 실행하게 됩니다.
while문에서 printf문으로 d_ino와 d_name을 불러오면 폴더의 inode번호와 d_name을 출력하는 것이 간단하게 완료됩니다.
(struct dirent의 구조는 아래 사진을 참고해주세요.)
당연히 모든 작업이 끝나면 closedir로 열었던 디렉토리를 닫아줍니다.
추가 코멘트
ㅎㅎ 이번 것은 매우 간단했네요.
심화 추가+
위의 파일 이름을 출력하는 프로그램에서 간단한 기능을 추가
탐색하는 폴더에 디렉토리가 있다면 그 디렉토리도 포함해서(recursive로) 출력