C언어 - 디렉토리 오픈 함수 opendir();

IT/C 언어


함수 원형 DIR * opendir(const char * name);


디렉토리 안의 파일 정보를 읽어오려면 먼저 FILE open처럼, 

DIR open을 해주어야 한다. 디렉토리 오픈을 해주기 위해 사용하는 함수로써,

반환값이 DIR이라는 구조체 포인터이고, 상수 char 포인터 를 인자로 받는다. 즉 문자열을 입력 받고

데이터 손상을 막기 위해 const로 받는다.


opendir 함수를 사용하기 위해선 dirent.h 헤더파일을 #include 해주어야 한다.

ex)

#include <dirent.h>


DIR * 변수를 선언해야 한다.

ex) DIR * spDir;


사진 예제)


예제처럼 절대path를 넣어도 되고, 변수를 넣어도 된다.


$gcc test.c 후 실행사진 )


성공했기 떄문에 success를 출력되었다.


opendir은 실패 혹은 error시에 NULL을 반환하며 error시에는 errno 값에 해당 에러 값이 set된다.


 ERRORS 종류

    -EACCES, 권한 없음.

    -EMFILE, 프로세스가 사용중인 많은 파일 디스크립터.

    -ENFILE, 시스템에서 현재 많은 파일이 오픈됨.

    -ENOENT, 디렉토리가가 없거나 문자열이 비어있음.

    -ENOMEM,  작업을 완료할 메모리가 부족함.

    -ENOTDIR,  디텍토리 파일이 아님. 


좀 더 자세한 정보는 

$man opendir 명령시 확인 할 수 있다.