底层文件I/O操作中read()函数的缓存问题

  最近在学习Linux过程中看到文件I/O操作这里时,文件I/O操作的系统调用涉及的5个函数:open(),read(),write(),lseek(),close()。在一开始就阐明这些函数的特点是不带缓存,直接对文件进行读写操作。而又在其后说到read()函数用于将从指定文件描述符中读出的数据放到缓存区中,并返回实际读入的字节数。这里与之前说的不带缓存很明显的发生了冲突。

  网上查阅read()函数也几乎没有提到这一问题,最后与fread()带缓存的对比才明白。read()的缓存这一缓存指的是应用程序自己开辟的缓存区,其不带缓存是指没有像fread()那样由操作系统提供缓存空间。总之,fread()的缓存区由操作系统开辟,read()的缓存区由应用程序开辟,至于read()中的buf到底在哪这应该涉及操作系统的知识了,这也是下一步将要学习的部分。

posted @ 2018-05-08 19:22  Max_130  阅读(971)  评论(0编辑  收藏  举报