glibc中Fully buffered 和Line buffered和No buffering
时间: 2024-06-02 11:09:23 浏览: 117
在glibc中,文件I/O缓冲区有三种模式:Fully buffered、Line buffered和No buffering。
1. Fully buffered:当使用Fully buffered模式时,数据被写入到缓冲区中,当缓冲区满时,才会将缓冲区中的数据写入到文件中。读取文件时,也是先将一定量的数据读入到缓冲区中,然后再从缓冲区中读取数据。Fully buffered是默认模式,当文件大小大于等于BUFSIZ(默认为8192字节)时,使用Fully buffered模式。
2. Line buffered:当使用Line buffered模式时,只有当缓冲区中的数据以换行符或文件结束符结束时,才会将缓冲区中的数据写入文件中。读取文件时,也是按行读取,遇到换行符或文件结束符时,将缓冲区中的数据返回。只有当文件大小小于BUFSIZ且输出到终端/tty时,才使用Line buffered模式。
3. No buffering:当使用No buffering模式时,数据直接被写入文件中,不会被缓存。读取文件时也是直接从文件中读取数据。当需要立即将数据写入文件中,比如需要实时输出日志时,可以使用No buffering模式。
这些模式可以通过setvbuf函数来设置。
阅读全文