차근차근/Linux

[리눅스] 디렉토리 내부에 있는 파일들의 목록을 출력하는 프로그램

예쁜꽃이피었으면 2014. 12. 1. 10:00

http://ohming.tistory.com/22



#include <stdio.h>

#include <unistd.h>

#include <dirent.h>

#include <string.h>

#include <sys/stat.h>

#include <stdlib.h>




void printdir(char * dir , int depth){

DIR * dp; //구조체 DIR의 포인터 변수

struct dirent * entry; // 구조체 dirent(디렉토리 엔트리)포인터 변수

struct stat stabuf; // 구조체 stat버퍼 변수

if(!(dp = opendir(dir))) // 문자열 dir로 디렉토리 열기에 실패하면

{

fprintf(ctderr,"cannot open directory : %s\n",dir); //오류메시지 출력

return ; // 함수종료

}

chdir(dir); //문자열 dir에 저장되어 있는 디렉토리로 이동


//dp에 저장된 디렉토리 엔트리를 읽어들여 entry에 저장

//저장된 값이 참인 동안 실행

while(entry = readdir(dp))

{

lstat(entry -> d_name, &statbuf); //entry에 저장된 디렉토리명을 상태 버퍼에 저장

if(S_ISDIR(statbuf.st_mode)){//상태버퍼의 모드 값을 검사하고. 디렉토리이면

if(!strcmp(".",entry->d_name)||!strcmp("..",entry->d_name))//문자열이"."또는".."이면

continue; //다음 엔트리 읽어들이기

//디렉토리나 파일이면

printf(entry -> d_name,depth,"",entry->d_name);//depth와 파일명을 출력

}

else //디렉토리가 아니고 파일이면

printf("%*s%\n",depth,"",entry->d_name);//depth와 파일명을 출력

}

chdir(".."); // 이전 디렉토리로 이동

closedir(dp); // dp에 열려있는 디렉토리 닫기

}




int main(void)

{

printf("Directory scan of /home/neil : \n");

printdir("/home/neil",0);//디렉토리 출력 함수 호출

printf("done.\n");


return EXIT_SUCCESS;//프로그램 정상종료

}



반응형

'차근차근 > Linux' 카테고리의 다른 글

[Linux] Tomcat 다중으로 설치하기  (0) 2016.03.15
centOS 메일서버 작동안함  (0) 2016.03.03
리눅스 메일서버 확인  (0) 2014.10.15
linux tomcat log 한글 깨짐현상  (0) 2014.09.18
리눅스 /etc/hosts.conf  (0) 2014.09.18