20145337 《信息安全系统设计基础》 第九周学习总结

Unix I/O 学习总结
本文总结了《信息安全系统设计基础》第九周的学习内容,重点介绍了Unix输入/输出的基本概念,包括文件描述符的使用、文件的读写操作及文件元数据的获取方式。

20145337 《信息安全系统设计基础》第九周学习总结

教材学习内容总结

Unix I/O

  • 输入/输出 是在主存外部设备之间拷贝数据的过程
  • 一个Unix文件就是一个m字节的序列:B0、B1、、、Bk、、、Bm-1,如网络、磁盘、终端,都被模式化为文件,所有的输入输出都被当作对相应文件的读和写来执行。
    • 打开文件:内核返回描述符,以标识文件。内核记录有关打开文件的所有信息。unix创建每个进程都有:标准输入、标准输出、标准错误
    • 改变当前的文件位置:这个文件位置是从文件开头起始的字节偏移量
    • 读写文件
    • 关闭文件

      打开、关闭文件

  • int open(char*filename, int flags,mode_t mode);
  • open 函数将filename转换为一个文件描述符,并且返回描述符数字
  • flags参数指明进程打算如何访问
  • mode参数指定新文件的访问权限
  • int close(int fd);
  • 进程通过调用close函数关闭一个打开的文件,关闭一个已关闭的描述符会出错

    读和写文件

  • 应用程序是通过分别调用read和write函数来执行输入和输出。
  • RIO,会自动处理上文中所述的不足值。提供了无缓冲的输入输出函数和带缓冲的输入函数
    • RIO无缓冲的输入输出函数:调用rio_readn和rio_writen
    • RIO带缓冲的输入函数:rio_readlineb,从一个内部读缓冲区拷贝一个文本行
  • 每打开一个描述符都会调用一次rio_readinitb函数,它将描述符fd和地址rp处的一个类型为rio_t的读缓冲区联系起来
  • 对同一描述符,对rio_readlineb和rio_readnb的调用可以任意交叉进行。然而对这些带缓冲的函数调用却不应和无缓冲的rio_readn交叉使用

    读取文件元数据

  • 应用程序能够通过调用stat和fstat函数,检索到关于文件的元数据
  • stat以文件名作为输入。fstat以文件描述作为输入
  • st_size成员 包括文件的字节数大小。st_mode成员编码了文件的访问许可位和文件类型
  • 普通文件包括某种类型的二进制或文本数据
  • 目标文件包含关于其他文件的信息
  • 套接字是一种用来通过网络与其他进程通信的文件
  • Unix提供的宏指令根据st_mode成员来确定文件的类型
  • 宏指令:S_ISREG() 普通文件?二进制或文本数据
  • 宏指令:S_ISDIR() 目录文件?包含其他文件的信息
  • 宏指令:S_ISSOCK() 网络套接字?通过网络和其他进程通信的文件

教材学习中的问题和解决过程

  • man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
  • grep -nr XXX /usr/include :查找宏定义,类型定义
    • man cp
      886543-20161113190926014-598564420.png

    • 在帮助文档中,通过/+关键词查找,向后查找:n,向前:N
    • grep -r递归查找-v反向查找

本周代码托管截图

886543-20161113190856499-103885288.png
886543-20161113190908624-670343155.png

其他(感悟、思考等,可选)

本周的学习任务较轻松,I/O比较好理解,不过老师留在教材导读中的问题,有点二丈和尚摸不着头脑

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第九周150/2002/28/20学习I/O

参考资料

posted on 2016-11-13 19:10 20145337马月 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/5337my/p/6059523.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值