처럼 readline()
기능을 구현하십시오. 나는 이것을 구현하려고 생각했다.readline()과 같이 한 줄씩 읽음 파일을 구현하려면
나는 먼저 read(fd, buf, 4096);
과 같은 파일을 읽어야한다. 그런 다음 buf[i]
을 if (buf[i] == '\n')
과 같은 바이트로 비교해야한다.
해당하는 경우 i
이 표시되면 lseek()
을 사용하여 첫 번째 파일 오프셋으로 이동 한 다음 다시 read(fd, buf, i)
을 입력하십시오. 이와 같이 fisrt 작업을 수행하면 두 번째 readline()
호출이이 메커니즘을 다시 수행합니다.
이 솔루션을 처음에는 생각했지만 buf[i]
은 바이트 단위로 비교한다는 의미이므로 fd
의 모든 문자를 읽으려면 너무 느립니다. 나는 이것 같이 비교해야 하는가 또는 더 나은 해결책 있는가 ??
fget/fgets를 사용하지 않는 이유는 무엇입니까? – inzanez
줄 단위로 읽습니다. 하지만 read()를 사용하여 솔루션을 알고 싶습니다. fgets 또는 다른 표준 I/O 함수는 결국 read(), write() 시스템 호출을 사용하기 때문에. – allen
그냥 아이디어 :'readline' 소스 코드를 탐색하여 어떻게하는지 볼 수 있습니다. – Siguza