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