标准IO和文件IO的区别:
区别1:是否有缓冲机制。标准IO有缓冲(全缓冲、行缓冲、不缓冲),文件IO无缓冲。
区别2:函数的来源不同。标准IO来自于标准C库,文件IO来自于linux内核,系统调用。
区别3:两种IO操作文件的入口不一样。标准IO操作的文件入口是文件流,文件IO操作的文件入口是文件描述符。
区别4:标准IO是凌驾于所有操作系统之上的IO,直接用的C库函数,而文件IO是跟操作系统有关的,用系统调用。
库函数可以说是对系统调用的一种封装,使用库函数代码的移植性好。
不同操作系统的系统调用接口并不兼容,程序移植时工作量大。
1.系统调用
系统调用对于应用程序最大的作用在于:
以统一的形式,为应用程序提供了一组文件访问的抽象接口,应用程序不需要关心文件的具体类型,也不用关心其内部实现细节。
常用的系统调用IO函数有5个: open,close,read,write,ioctl,此外还有非系统调用IO函数lseek,系统调用IO都是不带缓冲的IO。
2.open/close函数
open()函数:用于创建一个新文件或打开一个已有文件,返回一个非负的文件描述符fd。
0、1、2为系统预定义的文件描述符fd一般是从3开始。
flags参数一般在O_RDONLY(只读打开)、O_WRONLY(只写打开)和O_RDWR(读、写打