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