디렉토리 다루기

한지용·2021년 4월 14일
0

Operating System

목록 보기
5/7
post-thumbnail

디렉토리를 관리하는 시스템 호출/표준 라이브러리 함수

함수의미
mkdir새로운 디렉토리를 작성한다
rmdir디렉토리를 삭제한다
opendir디렉토리를 파일처럼 개방한다
closedir개방한 디렉토리를 닫는다
readdir개방된 디렉토리로부터 디렉터리 항목을 읽어온다
rewinddir개방된 디렉터리 스트림을 초기화한다
chdir디렉터리 경로를 변경한다
getcwd현재 작업 디렉터리를 구한다

mkdir,rmdir

int mkdir(const char pathname, mode_t mode);
int rmdir(const char
pathname);

pathname : 디렉토리의 경로 이름
mode : 생성하려는 디렉터리의 초기 접급 권한
return : 호출 성공하면 0, 실패하면 -1 반환

코드 실행 후 디렉토리 존재

opendir,closedir

DIR opendir(const char name);
int closedir(DIR *dir);

name : 개방하려는 디렉토리의 경로 이름
dir : 닫으려고 하는 개방된 디렉토리에 대한 포인터이다.
return :
[opendir] 호출이 성공하면 디렉터리 스트림에 대한 DIR형 포인터를 반환하고, 실패하면 NULL을 반환한다.
[closedir] 호출이 성공하면 0을 반환하고, 실패하면 -1을 반환한다.

  • open과 opendir
    리눅스는 다양한 파일의 형태를 다룬다
    데렉터리도 파일의 특수한 형태로 open함수로 파일처럼 열 수 있다.
    디렉토리 파일의 논리적인 구조를 알지 못하면 디렉터리 항을 읽어 오는 것이 쉽지않다. open 함수는 파일을 바이트 단위로 읽어온다. 즉, 논리적인 구조가 없다
    때문에 opendir 함수를 사용

readdir

struct dirent readdir(DIR dirp);

dirp: opendir로 개방한 디렉터리에 대한 포인터
return: 호출이 성공하면 struct dirent 포인터형의 디렉터리 항을 반환하고, 호출이 실패하면 NULL을 반환한다. 더 이상 읽을 디렉터리 항이 없을 경우에도 NULL을 반환한다.

rewinddir

void rewinddir(DIR *dir);

dir: 읽기 포인터를 초기화하려는 개방된 파일의 포인터이다
return: 없음

chdir

int chdir(const char *path);

path: 변경하려는 새로운 디렉터리 경로
return: 호출 성공시 0, 실패시 -1

getcwd

char getcwd(char buf, size_t size);

buf: 현재 작업 디렉터리의 경로를 저장할 버처
size: 버퍼의 최대 크기
return: 호출이 성공하면 buf의 포인터를 반환하고, 실패할 경우 NULL을 반환

0개의 댓글