使用文件描述符而不是文件指针的 getline()

getline() with a file descriptor instead of a file pointer

据我所知,没有与 getline() 等效的 libc 可以使用文件描述符而不是使用 FILE *

这有(技术)原因吗?

您可以使用 fdopen.

从文件描述符创建 FILE 流

要从文件描述符中获取一行,您需要一次向 OS 询问一个字符,这是非常低效的。 (POSIX shell 中的 read 内建函数是这样工作的——它通过一次检索一个字节来非常低效地读取行。)

FILE 流从 OS 批量请求数据,这提高了效率,但是文件描述符可能不是可倒带的文件——它可能是套接字或管道,如果您请求 100 个字符并且那 100 个批次的第三个字符是换行符,那么就没有办法一般地撤消对它之后的 97 个字符的读取。