一.LINUX中缓存类型
1.用户空间缓存机制
1.行缓存:stdin/stdout
2.无缓存:普通文件
3.全缓存 :stderr
行缓存:遇到\n换行符
进程正常终止的时候,从main函数 return
二 linux中文件的类型:共有7种
-:表示普通文件
d: 表示文件夹文件
c: 表示字符设备文件
b: 表示块设备文件
s: 表示socket文件
l:表示链接文件
p: 表示管道文件
三. 标准IO之定位流
fseek:
int fseek(FILE *stream, long offset, int whence);
功能:
定位文件流
参数:
fp: 改变偏移量的文件
offset: 偏移的字节个数
whence: SEEK_SET 定位文件流在文件的开头
SEEK_CUR 定位文件流在文件的当前位置
SEEK_END 定位文件流在文件的末尾
返回值:
成功 返回0
错误 -1 errno被设置
rewind:
rewind(3)
rewind() == fseek (fp, 0L, SEEK_SET);
功能:将文件流定位到文件的开头位置
ftell:
ftell(3)
功能:获取当前文件位置并返回
返回值: 成功 返回文件当前位置
四.系统IO,文件IO标准IO的区别
1.文件IO是linux内核向上提供的接口,都是系统调用函数
2.系统调用函数是内核直接提供的函数,在linux操作系统中有470+
库函数是在系统调用的基础上再次根据不同的需求进行封装的,标准IO都是通过系统调用函数而实现的
可以简单的说明
标准IO:
标准IO是C语言标准库中定义的一组用于输入输出操作的函数,如printf、scanf、fopen、fclose等。
它提供了一种抽象层,使得程序员不必关心底层硬件的细节,就可以进行文件和设备的数据交换。
标准IO通常使用缓冲机制来提高I/O操作的效率。
系统IO:
-
- 系统IO通常指的是操作系统层面的输入输出操作,它可能包括对硬件设备的直接访问。 - 系统IO可能涉及到更底层的接口,如中断、DMA(直接内存访问)等,这些通常由操作系统的设备驱动程序来管理。 - 系统IO可能不使用缓冲,或者使用不同的缓冲策略。
文件IO(File I/O):
文件IO是指对文件进行读写操作的过程,它是I/O操作的一种特例。
文件IO可以通过标准IO函数实现,也可以通过系统调用(如Unix/Linux的read和write系统调用)直接进行。
文件IO操作可能涉及到文件系统的交互,如文件的打开、关闭、定位和同步等。
系统IO
open:
int open(const char *pathname, int flags, mode_t mode);
功能:
参数:
pathname: 文件的路径
flags: 文件打开的标记信息和文件状态信息
三选一
O_RDONLY
O_WRONLY
O