文件IO和标准IO的区别
1.文件IO遵循POSIX标准,只能在遵循POSIX标准的类UNIX环境下使用;标准IO遵循ANSI标准,只要重新编译即可在不同的环境中运行。
2.文件IO属于系统调用,可移植性差;标准IO属于C库,可以在不同的操作系统下移植。
3.文件IO使用文件描述符;标准IO使用文件流指针。
4.文件IO不带缓冲,执行效率较低;标准IO带缓冲,执行效率较高。
5.文件IO属于系统调用,可以访问不同类型的文件,如普通文件,设备文件,管道文件,套接字文件等;标准IO属于C库只能访问普通文件。
注: 缓冲区,相当于一块内存,文件IO不存在缓冲区,所以每次向硬盘写入一个字符,都会经过
VFS->文件系统->驱动->硬盘;
但是标准IO存在缓冲区,它的写入方式是,先将所有字符保存至一块内存然后一起经过VFS->文件系统->驱动->硬盘。
所以标准IO执行VFS->文件系统->驱动->硬盘仅使用一次,而文件IO每一次写入都需要经历一次。故而标准IO的速度是要快的。(标准IO操作可以想象想一下文本的保存Ctrl+S).
文件IO和标准IO的关系
1.标准IO是基于文件IO并在其基础上进行了封装设置了不同类型的缓冲区实现的。
2.Linux使用GLIBC函数库,即GNU的C函数库,即包含了POSIX标准又包含了ANSI标准。