Liunx中用户缓冲区

发布时间:2024年01月24日

1.现象

看一下下面这三种情况

2.从系统层面上解释

1.缓冲区的系统结构

2.缓冲刷新的规则

1.无缓冲---直接刷新

2.行缓冲---不刷新,直到遇到\n(显示器)

3.全缓冲---缓冲区满了才刷新(文件写入)

4.进程退出的时候,也会刷新

3.其他


C语言为什么要提供缓冲区:


1.解决效率问题(就比如快递公司寄快递是你和其他人的快递一起寄的)

2.配合格式化(比如:scanf键盘输入的字符串,加载到缓冲区,然后再改int等等类型)

3.解释上面的现象

通过上面的讲解,前面两种应该可以解决了,我就讲解第三个:

因为文件识别是文件传输,所以采用第三种全缓冲的规则,所以一直没有传输(write的系统调用级别我们就不管了)一直存储在C语言层面的缓冲区,然后fork()产生子进程,缓冲区发生写时拷贝,进程结束会自动刷新缓冲区,所以刷新了两份!

4.模拟实现一下(有更进一步的了解)

5.总结

为什么说C语言具有可移植性, 就比如fopen()这个还是,在liunx中是用open系统调用的,在window是用其他系统调用函数,但语言层面都是fopen这个函数。只不过到时候选库的时候裁剪就好了。

文章来源:https://blog.csdn.net/Qianxueban/article/details/135820456
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。