关于 setbuf 和 setvbuf 问题

来源:11-2 文件流的缓冲

qq_高处不胜寒_0

2024-01-27

老师您好, 这里讲的 setbuf 和 setvbuf 函数指的是和 FILE 关联的用户空间缓冲区大小, 还是磁盘 DMA 到 内存中内核空间的文件描述符关联的缓冲区大小呢 ? 我理解的是和 FILE 关联的用户空间缓冲区大小, 是和 java 那些 BufferedReader 类相似的, 这个缓冲区是从内核空间到用户空间的IO缓冲, 是正确的吗, 如果是, 那么为什么要设置它, 文件相关的读写函数不是可以设置读内容到指定的某块内存吗, 这样是不是会多一次 IO 动作 ?

写回答

2回答

bennyhuo

2024-01-27

当然这个还跟具体平台的标准库实现有关系哈。
0
0

bennyhuo

2024-01-27

缓冲,就是攒一波读或者写。比如写的时候,我们自己调用write的时候可以先写到buf里面,等buf满再用系统调用完成真正的写入。读的时候也类似,理论上可以把能读到的数据(比如网卡收到的数据)集中一起读到buf中,后面我们用read读一个字节这样的时候就不会有系统调用了。
0
0

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程