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