getline()带有文件描述符而不是文件指针

时间:2015-12-03 10:52:03

标签: c posix getline libc

据我所知,没有与romainl相当的libc可以使用文件描述符而不是使用FILE *

是否存在(技术)原因?

1 个答案:

答案 0 :(得分:11)

您可以使用fdopen从文件描述符中创建文件流。

通常从文件描述符中获取一行,您需要一次向操作系统询问一个字符,这是非常低效的。 (POSIX shell中内置的read就像这样 - 它通过一次检索一个字节来非常低效地读取行。)

FILE流批量请求来自操作系统的数据,这提高了效率,但是文件描述符可能不是可重绕的文件 - 它可能是套接字或管道,如果你要求100个字符和第三个字符100批次是换行符,然后无法一般性地撤消后面97个字符的读取。