강의자료(1006)

Download Report

Transcript 강의자료(1006)

Chapter 4
•
int chdir(const char *path)
–
•
char *getcwd(char *name, size_t size);
–
–
•
한 프로그램이 주어진 디렉토리에서 많은 파일들을 접근할 필요가 있을 때 유용
현재 작업 디렉토리의 이름을 복귀
현재 작업 디렉토리 경로 이름에 대한 포인터를 돌려줌
ftw
–
–
–
주어진 디렉토리로 부터 출발하여 그 디렉토리의 아래에 있는 모든 파일과 부디렉토리에 대
한 작업을 진행
int ftw(const char *path, int(*func)(), int depth)
int func(const char *name, const struct stat *sptr, int type)
•
•
•
•
•
–
FTW-F
FTW-D
FTW-DNR
FTW-SL
FTW-NS
:
:
:
:
:
객체가
객체가
객체가
객체가
error
하나의 파일임
하나의 디렉토리임
읽을 수 없는 하나의 디렉토리임
하나의 심볼형 링크임
트리의 산책이 종료되는 경우
1) leaf에 도달
2) 오류 발생
3) 사용자가 정의한 함수가 0가 아닌 값을 return
실습(1)
•
•
•
ftw 예제 (p104) test1.c
stat에 의해 획득한 정보 list test2.c
test1.c와 test2.c를 수정하여 모든 내용에 대해 ls –al 명령어와 유사한 일을
수행하도록 하는 프로그램 작성
a. subdir을 생성
b. subdir안에 hard link 파일 2개, symbolic link 파일 2개, subsubdir을 생성
ln originalfile hardfile1
ln originalfile hardfile2
ln –s originalfile softfile1
ln –s originalfile softfile2
c. subsubdir안에 hard link 파일 2개, symbolic link 파일 2개, subsubdir을 생성
실습 (2)
•
ftw 예제 응용
–
–
./test3 <dirname> <filesize> <filemode> <prefix>
ftw로 <dirname>아래
• <filesize> 이상을 갖는 파일 이나
• <filemode>를 갖는 파일이나
• <prefix>를 갖는 파일들만 화면에 출력
–
실험 환경
• 현재 위치에서 <dirname>이름의 subdirectory를 만들고, subdirectory아래 subsubdirectory를
만들 것
• 각 subdirectory안에 <filesize>보다 작은 파일들과 <filesize>보다 큰 파일들을 만들 것
• 각 subdirectory안에 <filemode>의 값을 갖는 파일들을 만들 것
• 각 subdirectory안에 <prefix>로 시작하는 파일이나 directory를 만들 것
Chapter 4
•
파일시스템 (p106)
–
부트스트랩 블록
–
수퍼블록
•
파일시스템의 총 크기
•
inode들을 위해 준비된 블록수
•
파일시스템이 마지막으로 갱신된 날짜와 시간
•
가용 자료 블록 번호 리스트
•
가용 inode 번호 리스트
–
inode 블록
–
자료 블록
Chapter 4
•
void sync(void) : 파일시스템에 관한 정보를 포함하고 있는 모든 주메모리 버퍼를 flush
•
int fsync(int filedes) : 한 특정 파일과 연관된 모든 자료와 속성을 flush
•
차이점
•
–
fsync는 모든 파일 데이터가 디스크에 쓰여지기 전까지는 복귀하지 않음
–
sync는 자료의 쓰기가 schedule되면 쓰기 완료전에 복귀
–
sync는 복귀 값이 없음. fsync는 성공시 0, 오류시 -1을 복귀
/dev (pp.108~109)
Chapter 4
•
•
block device
–
디스크와 같이 자료 이동이 블록 단위로 발생. block device driver에 의해 제어
–
block device switch table
–
st_mode는 파일 허가에 060000를 더한 값을 갖는다 (S_IFBLK)
character device
–
단말기 프린터와 같이 임의 길이의 바이트열로 자료 이동이 발생
–
character device switch table
–
st_mode는 파일 허가에 020000을 더한 값을 갖는다 (S_IFCHR)