•
주의사항
보너스의 경우 보너스 파일을 새로 만들어야 하고 헤더로 새로 만들어서 추가를 해줘야한다.
•
파일 디스크립터
유닉스 시스템에 존재하는 모든 것은 파일로써 관리가 되고 이러한 파일들을 관리하고 접근할때 파일 디스크립터를 이용하게 된다.
•
기본적으로 할당되는 파일 디스크립터
0 : 표준 입력
1 : 표준 출력
2 : 표준 에러
•
우리가 생성하는 파일 디스크립터들은 3번부터 차례대로 할당
•
문제를 이해해보자..
Hello every one~
My name is hyson!
Plain Text
복사
위와 같은 파일을 gnl을 통해 만나면 첫 반환값은 첫 개행문자("\n")을 만나기 전인 Hello every one~ 이 출력되고 그 다음 출력을 할때에는 My name is hyson!
이 출력되게 만들어야 하는듯.
•
아무것도 적혀있지 않은 빈 파일을 읽었을 때 line에 할당을 해야하나?
line에 빈 문자열을 할당하고 0을 반환한다.
BUFFER_SIZE의 최대 크기는?
100만 까지는 되는데 1000만 부터는 Segmentation fault (core dumped)가 뜬다. (환경마다 다름)
•
> 자동변수는 stack 영역에 저장되는데, 보통 스택 사이즈가 윈도우는 1메가, 리눅스는 8메가로 설정되어있다.만약에 char buf[BUFFER_SIZE + 1];라고 선언하고 여기에 스택 사이즈보다 큰 수를 받으면 스택 오버플로우가 생길 수 있다
스택 오버플로우 피하기
1.
정적 변수로 선언하여 데이터 영역에 잡는다.
2.
전역 변수로 선언하여 데이터 영역에 잡는다.
3.
malloc 등을 사용, 동적 할당하여 힙 영역에 잡는다.
4.
시스템 설정 스택 영역 사이즈를 늘린다.
Table
List
Search