모든 파일 이름과 inode 번호를 출력하는 프로그램[C,Linux]

모든 파일 이름과 inode 번호를 출력하는 프로그램[C, Linux]

안녕하세요.

오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다.

  • 특정 파일/디렉토리 명을 argv[]로 넘겨준다.
  • argv[]로 넘겨받은 폴더의 모든 파일 이름을 출력
  • argv[]로 넘겨받은 폴더의 모든 inode 번호를 출력

코드

코드는 아래와 같습니다.

코드 파일은 깃허브에서 다운받으실 수 있습니다.

https://github.com/ykarr/linux/blob/master/inodename.c

 

ykarr/linux

Contribute to ykarr/linux development by creating an account on GitHub.

github.com

실행

위의 코드를 컴파일해서 실행해보겠습니다.

아래는 실행했을 때 사진입니다.

아래 사진처럼 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로) 출력

Designed by JB FACTORY