Unix/Linux编程:文件I/O模型

I/O模型

  • Unix系统I/O模型最为显著的的特征之一是其I/O通用性概念。也就是说,同一套系统调用(open()、read()、write()、close()等)所执行的I/O操作,可以施之于所有文件类型,包括设备文件在内(应用程序发起的I/O请求,内核会将其转化为相应的文件系统操作,或者设备驱动程序操作,以此来针对模板文件或者设备I/O操作)。因此,采用这些系统调用的程序能够处理任何类型文件
  • 本质而言,内核值提供一种文件系统:文件流序列,在处理磁盘文件、磁盘或者磁带设备时,可以通过lseek()系统调用来随机访问
  • 许多应用程序和函数库都将换行符(十进制 ASCII 码为 10)视为文件中一行的结束和另一行的开始。Unix中没有文件结束符的概念,读取文件时如无数据返回,就会认为到达文件末尾

文件描述符

I/O系统调用使用文件描述符—数值很小的非负整数----来指代打开的文件。获取文件描述符的常用手法是调用 open(),在参数中指定 I/O 操作目标文件的路径名。

通常,由shell启动的进程会继承三个已打开的文件描述符

  • 描述符 0 为标准输入,指代为进程提供输入的文件
  • 描述符 1 为标准输出,指代供进程写入输出的文件
  • 描述符 2 为标准错误,指代供进程写入错误消息或异常通告的文件。

在交互式shell或者程序中,上面三者一般都指向终端。在 stdio 函数库中,这几种描述符分别与文件流 stdin、stdout 和 stderr 相对应

stdio函数库

  • C编程语言在执行I.O操作时,往往会调用C标准库的I/O函数。也将这样一组I/O函数称为stdio函数库,其中包含括 fopen()、fclose()、scanf()、printf()、fgets()、fputs()等
  • stdio函数位于I/O函数调用层(open()、close()、read()、write()等)之上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值