Fogeaters, Light The World.

03

2016-Mar

[리눅스] 파일관리 라이브러리 함수

작성자: title: MoonBlonix IP ADRESS: *.148.87.98 조회 수: 1649

참고자료 1 :: http://blog.naver.com/PostView.nhn?blogId=skout123&logNo=50133105128

참고자료 2 :: http://hyunkie.tistory.com/45





#include <unistd.h>



성공시 0, 실패시 EOF 리턴


int mkdir(const char *pathname, mod_t mode)    // mod_t는 접근권한(읽기/쓰기/읽기쓰기) 8진수로 (0754, 0777 이런식)


int rmdir(const char *pathname)    // 디렉토리 내부가 비어있을때만 삭제 가능


int remove(const char *path)    // 파일삭제


int rename(const char *oldname, const char *newname)    // 이름 혹은 경로변경


int chdir(const char *path)    // 현재 작업디렉토리 변경


int fchdir(int fp)    // 파일 포인터의 위치로 현재 작업디렉토리 변경



char* getcwd(char *buf, size_t size)    // buf 에 현재 작업 디렉토리 저장. size는 예상 디렉토리 길이. 대충 200 넣으면 됨.

// 디렉토리 길이가 예상보다 길 경우 NULL 포인터 반환




#include <sys/types.h>

#include <dirent.h>


DIR* opendir(const char *path)    // 디렉토리를 연다. (FILE fp; fp = fopen() 에서 fopen과 유사)


DIR* closedir(DIR* dir)    // 디렉토리를 닫는다. (fclose와 유사. 꼭 호출해줘야 메모리 누수를 막을 수 있다)


//DIR 구조체는 다음과 같다.

typedef struct{

     int d_fd;        // FD (파일 디렉토리 포인터? FP와 유사)

     int d_loc;       // 블록 오프셋

     int d_size;      // 데이터의 크기

     int d_*d_buf;   // 디렉토리 블록

}


struct dirent* readdir(DIR* dir)    // opendir로 연 디렉토리를 읽고 dirrent 구초체 포인터에 리턴


// dirent 구초체는 다음과 같다.

typedef struct{

     int d_ino;      // inode 번호

     off_t d_off;      // 디렉토리 내 오프셋

     unsigned int d_reclen;      // 항목의 레코드 길이

     char d_name[NAME_MAX+1];      // 파일 이름

}


// 이 함수는 호출할때마다 파일 하나씩 순서대로 읽어내므로 다음과 같이 사용 가능하다.

DIR* dp;

struct dirent* dirp;

~~~ dir 오픈 작업

while ( dirp = readdir(dp) )  // 이렇게 하면 dp 디렉토리 안의 모든 파일에 대해 반복문이 돈다.

~~~ dir 클로즈 작업



void rewinddir(DIR* dir)    // 디렉토리 위치 식별자를 처음으로 되돌린다.




// 그리고 마지막으로 윈도에서 사용하는 fcntl.h 를 리눅스에서도 인클루드 해 사용할 수 있다.

profile
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15118
52 OP Amp - 연산 증폭기 title: MoonBlonix 2016-03-07 1741
51 [아두이노] RC용 ESC(변속기) 작동방법 title: MoonBlonix 2016-03-06 1762
50 [AVR/아두이노] 수광 센서 file title: MoonBlonix 2016-03-06 1759
49 [리눅스] 정적, 공유, 동적 라이브러리 사용 title: MoonBlonix 2016-03-05 1325
48 [C/C++] Makefile 만들기 title: MoonBlonix 2016-03-05 1777
47 [C/C++] OS 구분 전처리기 매크로 title: MoonBlonix 2016-03-05 1562
46 [C++ STL] std::unique_ptr + 1 title: MoonBlonix 2016-03-05 1754
45 [AVR] 퓨즈비트 옵션 file + 1 title: MoonBlonix 2016-03-04 1454
44 [AVR] 외부클럭, 리셋회로 설계 file + 1 title: MoonBlonix 2016-03-04 1739
43 [AVR] 소프트웨어 UART 통신(Software Serial) file + 1 title: MoonBlonix 2016-03-04 1739
42 [AVR/아두이노] PIR 인체감지 센서 file title: MoonBlonix 2016-03-03 1911
» [리눅스] 파일관리 라이브러리 함수 title: MoonBlonix 2016-03-03 1649
40 [리눅스] 리눅스 커널 API 모음 title: MoonBlonix 2016-03-03 1950
39 [리눅스/윈도우/C/C++] 플러그인 시스템 구현 title: MoonBlonix 2016-03-03 1991
38 [라즈베리파이] UART 통신 file title: MoonBlonix 2016-02-25 1621
37 [리눅스] vi 편집기 명령어 title: MoonBlonix 2016-02-25 1520
36 [AVR] 서보모터 제어 file title: MoonBlonix 2016-02-21 1669
35 [AVR] 16MHz 클럭의 연산자별 연산속도 측정 title: MoonBlonix 2016-02-16 1686
34 [AVR] 입력받기 (풀업저항, 외부인터럽트) file + 1 title: MoonBlonix 2016-02-13 1994
33 [AVR] ADC (아두이노 analogread 사용) file + 2 title: MoonBlonix 2016-02-13 1703