시스템 프로그래밍-디렉터리 다루기

YuWan·2024년 6월 28일

linux

목록 보기
7/26

디렉터리 다루기

  • 디렉터리 생성하기
int mkdir(const har *pathname, mode_t mode);
  • Parameter
    • pathname:생성하려는 디렉터리의 경로
    • mode:생성하려는 디렉터리의 초기 접근 권한
  • Return
    • 성공시 0
    • 실패시 -1
  • Owner, Group, Other
    • 읽기 4, 쓰기 2, 실행 1

비어있는 디렉터리 삭제하기

int rmdir(const char *pathname);
  • Parameter
    • pathname:삭제하려는 디렉터리의 경로명
  • Return
    • 성공시 0
    • 실패시 -1

디렉터리 열기

DIR *opendir(const char *name);
  • Parameter
    • name:개방하려는 디렉터리의 경로명
  • Return
    • 성공시 DIR형 포인터 반환
    • 실패시 NULL반환

열린 디렉터리 닫기

int closedin(DIR *dirp);
  • Parameter
    • dirp:닫으려는 디렉터리의 대한 포인터
  • Return
    • 성공시 0
    • 실패시 -1

디렉토리 읽기

struct dirent *readdir(DIR *dirp);
  • Parameter
    • dirp:opendir로 개방한 디렉터리에 대한 포인터
  • Return
    • 성공시 struct dirent 포인터 반환
    • 실행시 혹은 더 이상 읽을 디렉터리 항이 없을 경우 NULL 반환
  • DIR *는 디렉터리를 다루기 위한 핸들러,
  • struct direntL:그를 통해 접근 가능한 디렉터리 엔트리
  • inode 번호를 통해 위치를 유추할 수 있는 정보가 나온다.
struct dirent{
    ino_t d_ino; //파일의 inode qjsgh
    off_t d_off; // 현재 디렉터리 엔트리의 오프셋: 엔트리 탐색시 사용
    unsigned short d_reclen;// 현재 디렉터리 엔트리의 길이
    unsigned char d_type;// 파일 형식
    char d-name[256];// 파일 이름

현재 작업 디렉터리 경로 얻어오기

char *getcwd(char *buf, size_t size);
  • Parameter
    • buf:현재 작업 디렉터리의 경로를 저장할 버퍼
    • size:버퍼의 최대 크기
  • Return
    • 성공시 buf의 포인터
    • 실패시 NULL

현재 프로세스의 작업 디렉터리 변경

int chdir(const char *path);
  • Parameter
    • path:변경하려는 새로운 디렉터리 경로
  • Return
    • 성공시 0
    • 실패시 -1
profile
공부 블로그

0개의 댓글