1、文件:一组数据的集合 2、文件名: 集合的名称

3、Linux系统的7种文件类型:

b    block        块设备文件         
c    character    字符设备文件
d    directory    目录文件
-                 普通文件
l    link         链接文件
s    socket       套接字文件        
p    pipe         管道文件

4、IO:输入/输出

  • 输入:数据由外部流向进程内部。例如读键盘、读磁盘、接收网络数据等
  • 输出:数据由进程内部流向外部。例如向屏幕打印、写入磁盘、发送网络数据等

  • 标准IO:是由C标准库提供的函数接口,有缓存,是高级IO,可移植性高(几乎所有支持标准C库的系统下都可以运行)

  • 文件IO:是由Linux内核提供的函数接口,无缓存,是低级IO,可移植性较低(只能在LINUX/UNIX系统下运行)

linux系统下,中断启动的进程默认打开3个IO通道:

标准输入: stdin
标准输出: stdout
标准出错: stderr

5、缓存:为了平衡高速设备以及低速设备之间的速度差异而设定的块内容,用来临时存放数据。缓存可以极大地提高系统的整体运行效率

  • 缓存的分类:

    • 行缓存:只有满一行(遇到换行符)才刷新缓存(将数据写入设备并清空缓存),通常是一些用来人机交互的终端设备,例如标准输入。
    • 块(满缓存): 只有缓冲区满了才刷新缓存,通常是普通的文件。
    • 不缓存:没有缓冲区,进程的输出数据将直接写入内核。通常是一些对实时性有严格要求的设备(如:stderr)

注意:所有的缓冲的刷新方式除了以上之外,还可以发生在,fflush之后、缓冲区满,进程正常终止(主函数return或调用 exit)

  • 操作文件流缓冲的接口: setvbuf

  • 流:对数据的一种操作方式,流抽象了一种先进先出,后进后出的通道,使得用户只需要关心数据的流向,不用关心数据的尺寸、内容以及具体如何传输的。绝对禁止函数返回自己局部变量的地址。

results matching ""

    No results matching ""