Reading a line on a fd is way too tedious.
int get_next_line(int fd);
get_next_line.c, get_next_line_utils.c, get_next_line.h
#1. file descriptor for reading
the string I read
read, malloc, free
Write a function which returns a line read from a file descriptor, without the newline.
- GNL 함수를 loop 안에서 호출하면 fd의 텍스트를 EOF가 올 때 까지 한 번에 한 줄씩 읽을 수 있다.
- GNL 함수를 처음 호출 했을 때 파일을 끝까지 읽었다 하더라도, 두 번째 호출했을 때는 두 번째 line부터 시작해야한다.
- file로부터, redirection으로부터, stdin으로부터 읽었을 때 함수가 제대로 동작해야 한다.
- 이 프로그램은 -D BUFFER_SIZE=xx 플래그를 붙여서 컴파일 해야 한다. 즉, read 함수는 표준입력으로 또는 파일로부터 읽어들이기 위해서 컴파일할 때 정의된 BUFFER_SIZE를 사용해야 한다.
- BUFFER_SIZE가 1일 때도, 9999일 때도, 10000000 (1000만)일 때도 함수가 제대로 동작해야 한다.
- Single Static Variable로 get_next_line 성공하기.
- 다중 file descriptor를 관리 할 수 있는 함수로 만들기. 예를 들어 file descriptor 3, 4, 5를 읽을 수 있는 경우, get_next_line은 3에서 한 번, 4에서 한 번, 다시 3에 서 한 번, 5에서 한 번 호출할 수 있어야 한다. 각 descriptor의 reading thread를 잃지 않으면서 말이다.