., ..은 모든 디렉토리에 항상 존재하고 디렉토리 생성 시 자동 포함됨
- mkdir - 디렉토리 생성 mkdir("han", mode)
- rmdir - 디렉토리 삭제 rmdir("han")
- rename - 디렉토리명 변경 rename("old", "newName")
- getcwd - 현재 작업 디렉토리 위치 getcwd(char *buf, size_t size);
- cwd = getswd(NULL, BUFSIZ); 또는 getswd(wd, BUFSIZ) 로 사용 가능
전자는 cwd에 경로 저장, 후자는 wd에 경로 저장됨 - 명령은 pwd
- cwd = getswd(NULL, BUFSIZ); 또는 getswd(wd, BUFSIZ) 로 사용 가능
- chdir - 디렉토리 이동 chdir("path")
- opendir - 디렉토리 열기
- close dir - 디렉토리 닫기
- readdir - 디렉토리 정보 읽기
- struct dirent
- ino_t d_ino;
- off_t d_off;
- unsigned short d_reclen; (record length)
- char d_name[1];
- struct dirent
#include <dirent.h>
#include <stdlib.h>
#include <stdio.h>
int main(){
DIR *dp;
struct dirent *dent;
struct stat sbuf;
char path[BUFSIZ];
dp = opendir("han");
while((dent = readdir(dp))){
if(dent->d_name[0]=='.') continue;
sprintf(path, "han/%s",dent->d_name); //디렉토리 항목 읽어서 path에 저장
stat(path, &sbuf);
printf("name: %s\n", dent->d_name);
printf("Inode (dirent) : %d\n",(int)dent->d_ino);
printf("Inode (stat) : %d\n",(int)sbuf.st_ino);
printf("mode : %o\n", (unsigned int)sbuf.st_mode);
printf("Uid: %d\n",(int)sbuf.st_uid);
}
closedir(dp);
}
- 디렉토리 오프셋
- telldir(DIR *dirp) - 현재 위치 알려줌 (리눅스에서는 잘 안됨)
- seekdir(DIR *dirp, long loc) - 디렉토리 오프셋을 지정한 위치로 이동시킴
- rewinddir(DIR *dirp) - 디렉토리 오프셋을 0으로 이동시킴