文件io和标准io的联系
linix对IO文件的操作分为不带缓存的IO操作(文件IO都是不带缓存IO)和带缓存的标准IO操作. 刚开始,要明确以下几点: 不带缓存,其实不是直接对磁盘文件进行读取操作 ,像read()和write()函数,它们都属于系统调用,只不过在用户层没有缓存,所以叫做无缓存IO,但对于内核来说,还是进行了缓存,只是用户层看不到罢了。 1. linux的文件I/O是一种低级的I/O,由操作系统提供的基本IO服务。(底层) 而标准I/O是ANSIC建立的一种标准I/O模型,是一种标准函数包和stdio.h头文件中的定义,具有一定的可移植性。(标准库封装) 2. 标准I/O默认采用了缓冲机制,还创建了一个包含文件和缓冲区相关数据的数据结构。 文件I/O一般没有采用缓冲模式,需要自己创建缓冲区。 3. 所有I/O函数都是针对文件描述符的。当打开一个文件时,即返回一个文件描述符,然后该文件描述符就用于后续的I/O操作。 而对于标准I/O库,它们的操作则是围绕流进行的。当用标准I/O库打开或创建一个文件时,我们已使用一个流与一个文件相关联。 4. 标准的 C 库函数(标准io)建立在底层系统调用(文件io)之上 ,即 C 函数库文件访问函数的实现中使用了文件 I/O 系统调用。 标准的 C 库中的文件处理函数为了减少使用系统调用的次数,提高效率