据我所知,没有getline()
与文件描述符相同的libc ,而不是使用FILE *
.
是否有(技术)原因?
您可以使用文件描述符创建文件流fdopen
.
要通常从文件描述符中获取一行,您需要一次向操作系统询问一个字符,这是非常低效的.(read
POSIX shell中的内置工作方式如此 - 它通过一次检索一个字节来非常低效地读取行.)
FILE流批量请求来自操作系统的数据,这提高了效率,但是文件描述符可能不是可重绕的文件 - 它可能是套接字或管道,如果要求100个字符,那100个批次的第三个字符是换行符然后就没有办法一般撤消后面97个字符的读取.