2018-2019-1 20165306 《信息安全系统设计基础》第六周学习总结

2018-2019-1 20165306 《信息安全系统设计基础》第六周学习总结

教材学习内容总结

10.1Unix I/O

  • 所有的I/O设备都被模型化为 文件 ,而所有的输入和输出都被当做对相应文件的读和写来执行。
  • Linux shell创建的每个进程开始时都有三个 ** 打开 ** 的文件:标准输入(描述符为0,STDIN_FILENO)、标准输出(描述符为1,STDOUT_FILENO)、标准错误(描述符为2,STDERR_FILENO)。

10.2文件

  • 普通文件:文本文件是只含有ASCII或Unicode字符的普通文件;二进制文件是所有其他的文件。 对内核而言 ,文本文件和二进制文件没有区别。
  • 目录:用mkdir创建一个目录,用ls查看其内容,用rmdir 删除该目录。
  • 套接字:用来与另一个进程进行跨网络通信的文件。
  • Linux内核将所有文件都组织成一个目录层次结构,由名为/(斜杆)的根目录确定。可以用cd命令来修改shell中的当前目录。
    - 绝对路径名:以一个斜杆开始,表示从根节点开始的路径。
    - 相对路径名:以文件名开始,表示从当前工作目录开始的路径。

10.3打开和关闭文件

  • open函数:将filename转换为一个文件描述符,并且返回描述符数字。返回的描述符总是在进程中当前没有打开的最小描述符。

O_RDONLY只读,O_WEONLY 只写, O_RDWR 可读可写, O_CREAT 创建, O_TRUNC 截断,O_APPEND设置到结尾

  • mode参数:指定了新文件的访问权限位。

10.4读和写文件

  • 在某些情况下,read和write传送的字节比应用程序要求的要少。这些不足值 表示有错误,出现这样情况的原因有:
    - 读时遇到EOF。
    - 从终端读文本行。
    - 读和写网络套接字。

10.6读取文件元数据

  • stat函数以一个文件名作为输入,fstat以文件描述符作为输入。
  • st_size成员包含了文件的字节数大小,st_mode成员则编码了文件访问许可位和文件类型。

10.8共享文件

  • 描述符表:每个打开的描述符表项指向文件表中的一个表项。
  • 文件表:打开文件的集合是由一张文件表来表示的,所有的进程共享这张表,包括文件位置、引用计数、一个指向v-node表中对应表项的指针。
  • v-node表:所有的进程共享这张v-node表,每个表项包含stat结构中的大多数信息,包括st_mode和st_size成员。

10.9I/O重定向

  • linux>ls>foo.txt将标准输出重定向到磁盘文件foo.txt。
  • int dup2(int oldfd,int newfd)复制描述符表项oldfd到描述符表表项newfd,覆盖描述符表项newfd以前的内容。如果newfd已经打开了,dup2会在复制oldfd之前关闭newfd。

10.10标准I/O

  • 对于程序员而言,一个流就是一个指向FILE类型的结构的指针。
  • 类型为FILE的流是对文件描述符和流缓冲区的抽象。

10.11综合:我该使用哪些I/O函数?

  • 只要有可能就使用标准I/O。
  • 不要使用scanf或rio_readlineb来读二进制文件。
  • 对网络套接字的I/O使用RIO函数。

教材问题及解决

理解:

Read(fd2,&c,1); 已读取了f2的第一位f,

Dup2(fd2,fd1); 将fd1重定向到了fd2,

Read(fd1,&c,1); 相当于读取的是fd2的第二位o。

上周考试错题总结

  • 在任何时刻,所有的读/写头都位于同一个柱面上。
  • 磁盘以扇区大小的块来读写数据。
  • 对扇区的访问时间有三个主要的部分:寻道时间、旋转时间、传送时间,访问时间主要是寻道时间和旋转延迟。

猜你喜欢

转载自www.cnblogs.com/5306xyh/p/9902847.html
今日推荐