강의자료(0922)

Download Report

Transcript 강의자료(0922)

시스템 호출
• read , write의 효율성
• lseek test
–
–
–
–
off_t lseek(int filedes, off_t offset, int start_flag);
SEEK_SET : offset을 파일의 시작부터 계산
SEEK_CUR : offset을 파일 포인터의 현재 위치부터 계산
SEEK_END : offset을 파일의 끝부터 계산
filedes = open(filename, O_RDWR);
lseek(filedes, (off_t)0, SEEK_END);
write(filedes, outbuf, OBSIZE);
=> open(filename, O_RDWR|O_APPEND); write(filedes, outbuf, OBSIZE);
• example – test1.c
• 실습 – 연습문제 2.8
시스템 호출
• P34 – 호텔 예
– createdata.c
– getoccupier.c, test3.c
•
gcc –o test3 test3.c getoccupier.c
– (실습)
•
•
방 번호는 argc, argv를 사용해서 command로 부터 입력 받음 --- atoi(argv[1]) 사용
해당 방 번호의 투숙객을 출력
– 연습문제 2.10
•
•
•
방 번호는 argc, argv를 사용해서 command로 부터 입력 받음 --- atoi(argv[1]) 사용
한 방으로부터 투숙객을 제거하는 freeroom 루틴을 작성
방이 비어 있는지를 조사한 후, 새 손님을 방에 넣는 addguest를 작성
시스템 호출
• 파일의 끝에 자료 추가 – p37
lseek(fd, (off_t)0, SEEK_END);
write(fd, buf, BUFSIZE);
fd = open(“filename”, O_WRONLY | O_APPEND, 0644);
write(fd, buf, BUFSIZE);
• 파일의 제거 – test5.c
int unlink(const char *pathname);
int remove(const char *pathname);
- 성공시 0, 실패시 -1을 반환
- rm과 동일