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

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

    • 在帮助文档中,通过/+关键词查找,向后查找:n,向前:N

    • grep -r递归查找-v反向查找

本周代码托管截图


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

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

学习进度条

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

参考资料

原文地址:https://www.cnblogs.com/5337my/p/6059523.html