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

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

1.学到的知识点

  • Linux中可以用Unix I/O处理的是普通文件、设备文件、目录、套接字
  • flag 参数中O_RDONLY,O_WRONLY,O_RDWR至少要有一个
  • Linux内核使用的file table 所有的进程共享的。
  • 使用dup2 把标准输入重定向到描述符7 dup2(7,0)
  • ls > foo.txt 是输出重定向
  • 类型为FILE的流是对文件描述符和流缓冲区的抽象。
  • 目录是一种文件
  • Linux将所有文件组织成目录层次结构
  • ./a.out使用的是相对路径
  • pwd命令可以查看当前工作目录的绝对路径
  • st_mode第一位 p632 st_size成员包含文件的字节数大小,st_mode成员则编码了文件访问许可位和文件类型。
  • chmod是文件/目录权限设置命令,st_mode成员编码了文件访问许可位和文件类型。
  • 输入输出是在主存和外部设备之间复制数据的过程。
  • 系统调用open可以获得文件描述符。
  • 内核用三个相关的数据结构来表示打开的文件呢,即描述符表,文件表,v-node表。
  • 所有I/O设备都被模型化为文件。
  • 所有的输入输出都被当做对相应文件的读和写来执行
  • 对内核而言,文本文件和二进制文件没有任何区别。区别是相对应用程序而言的。
  • Unix I/O中标识文件的是文件描述符fd
  • 当频繁的使用read和write系统调用读写文件,进程就需要不断的在内核态和用户态之间转换,系统开销太大;因此流(stream)就出现了,流的结构FILE了几个部分:文件描述符fd,指向该流缓冲区指针,缓冲区大小,当前缓冲区中的字符数,出错标志等。
  • linux shell创建的每个进程开始时都有三个打开的文件:标准输入,标准输出和标准错误。

2.遇到的问题

  • 下面代码的输出是(D)
    A.fd2 = 0
    B.fd2 = 1
    C.fd2 = 2
    D.fd2 = 3
    E.fd2 = 4
    F.不确定

  • Unix/Linux中,对于代码fd=open("foo",O_WRONLY,0766),umask=022,下面说法正确的是()
    A.进程对foo是只写的
    B.同组成员能写foo
    C.使用者可以执行foo
    D.任何人都可以写foo
    正确答案: A C 你的答案: A B C D
    解析:九个权限可以用0777表示,07(使用者)7(同组成员)7(其他人)7(111)(读:写:执行),文件实际权限是mode&~mask

原文地址:https://www.cnblogs.com/20165336kzq/p/9905029.html