【发布时间】:2012-03-20 18:08:51
【问题描述】:
它实际上是逐个字符地读取,还是将一些字节读入内核缓冲区并逐个字符地返回给用户?
和fgets一样吗?
假设我使用 glibc 和 gcc 编译器。
【问题讨论】:
-
这完全取决于您的特定平台/C 编译器/运行时/等。标准没有说。你说的是什么平台?
它实际上是逐个字符地读取,还是将一些字节读入内核缓冲区并逐个字符地返回给用户?
和fgets一样吗?
假设我使用 glibc 和 gcc 编译器。
【问题讨论】:
几乎是对的。具有用户/内核分离的典型现代实现将字节存储在用户缓冲区中,而不是内核缓冲区中。因此,对fgetc 的多次调用实际上触发了少数真正的系统调用。
【讨论】:
glibc。