허용 함수: read
, malloc
, free
EOF까지 파일을 한 번에 한 줄씩 읽어와 *line
에 저장하는 함수 - 보너스: 단일 정적 변수
, 여러 파일을 동시에 읽을 수 있어야 함
int get_next_line(int fd, char **line);
fd
정수형, 읽을 파일 번호
*line
문자열 포인터, 읽어온 줄의 내용을 저장
1
줄 하나를 읽음
0
줄의 끝 (EOF)
-1
오류
**line
이 이중 포인터인 이유는?반환값이 둘이라(오류 상태, 읽어온 줄), *line
은 문자열을 담는 char pointer 이므로 거기에 정보를 덮어씌우려면 *line
의 주소를 입력받아야 함. 함수를 호출할때는
char *line;
get_next_line(4, &line);
printf("lines read: %s", line);
(사용 상상도)
#include <unistd.h>
ssize_t
read(int fildes, void *buf, size_t nbyte);
fildres
정수형, 읽을 파일 번호 (=fd)
nbyte
읽어올 바이트 수
buf
배열, 읽어온 문자열을 저장
읽어온 바이트 수
0
줄의 끝 (EOF)
-1
오류
*ssize_t: 부호 있는 size_t (mac에서 8바이트)
-> get_next_line 출력값으로?
read(fd, buffer, BUFFER_SIZE) 에서 fd == 0 인 경우와 fd 가 파일인 경우 BUFFER_SIZE 내에 있는 '\n' 를 처리하는 방법이 다르다
이거는 어떤 말인지 아직은 잘 모르겠다... 내일 다시 찾아봐야지 (TODO)
TODO
TODO
TODO