-
20145325张梓靖 《信息安全系统设计基础》第9周学习总结
20145325张梓靖 《信息安全系统设计基础》第9周学习总结
教材学习内容总结
- UNIX I/O 在UNIX系统中有一个说法,一切皆文件。所有的I/O设备,如网络、磁盘都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。这种将设备映射为文件的方式,允许UNIX内核引出一个简单、低级的应用接口,称为UNIX I/O,这使得所有的输入和输出都能以一种统一且一致的方式来执行:打开文件、改变当前的文件位置、读写文件、关闭文件。
- 打开和关闭文件
int open(char *filename,int flags,mode_t mode)
,其中打开标志flags有三种基本标志:O_RDONLY、O_WRONLY、O_RDWR。也可以和其他三种(O_CREAT、O_TRUNC、O_APPEND)组合使用。mode参数指定了新文件的访问权限位。
- 读和写文件 在系统I/O中读写文件用的系统函数为read()和write()函数来执行:read函数从描述符为fd的当前文件位置拷贝最多n个字节到存储器位置buf。返回值-1表示一个错误,而返回值0表示EOF。否则,返回值表示的是实际传送的字节数量。而write函数从存储器位置buf拷贝至多n个字节到描述符fd的当前文件位置。返回值要么为-1要么为写入的字节数目。
- 用RIO包健壮地读写 RIO:1.无缓冲的输入输出函数(直接在存储器和文件之间传送数据,没有应用级缓冲,它们对将二进制数据读写到网络和从网络读写二进制数据尤其有用),对同一个描述符,可以任意交错地调用rio_readn和rio_writen;2.带缓冲的输入函数,对同一个描述符,可以任意交错地调用rio_readnb和rio_readineb。
- 读取文件元数据 应用程序能够通过调用stat和fstat函数检索到关于文件的信息(有时也称为文件的元数据),若成功,返回0,若出错则为-1.stat以一个文件名为输入,并且填充buf结构体。fstat函数只不过是以文件描述符而不是文件名作为输入。stat结构体中,st_size成员包含了文件的字节大小,st_mode为文件访问许可位。UNIX提供的宏指令根据st_mode成员来确定文件的类型:S_ISREG(),这是一个普通文件;S_ISDIR(),这是一个目录文件;S_ISSOCK()这是一个网络套接字。
- 共享文件 内核用三个相关的数据结构来表示打开的文件:描述符表,文件表,v-node表。
- I/O重定向 通过
dup2
函数,对描述符表表项进行拷贝覆盖,实现重定向。
- 错误处理 系统级函数调用,3种不同风格的返回错误:Unix风格的、 Posix风格的、 DNS风格的。
教材学习中的问题和解决过程
- 问题: 例如 write函数,其中的第2个参量定义为了“const void”,但对 read函数却只是直接的定义为“void”,
const
有什么作用,为什么要用它
- 解决过程 通过上网查找,知道
const
是作为修饰常类型,即其修饰的值不允许修改,但在 write函数里面有什么意义确实不太明白
- 问题:
rio_readn
与rio_writen
中nread=0
有什么作用
- 解决过程 由
nleft>0
可以知道,当errno==EINTR
时,nread=0
,则一直循环,即暂停之意
- 问题: 对10.1中“改变当前的文件位置”,“文件位置”指的是文件存放的位置,还是文件里面的位置(类似光标在文件里的某位置)
- 解决过程 通过继续后面的教材阅读(10.6、10.7),能够基本清楚的判定“文件位置”指的是文件里面的某一位置
- 问题: 读缓冲区格式代码里(p602),2个char类型的变量怎么理解
- 解决过程 通过后面的
rio_read
函数代码(p603),清楚知道对rio_buf[RIO_BUFSIZE]
可以理解为缓存空间,同样的rio_bufptr
可以理解为缓冲空间里的指引的地址(类似于文件位置)
本周代码托管
代码托管
学习进度条
|
代码行数(新增/累积) |
博客量(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
3500行 |
25篇 |
300小时 |
|
第一周 |
70/70 |
2/2 |
22/22 |
|
第二周 |
150/220 |
1/3 |
23/45 |
|
第三周 |
160/380 |
1/4 |
25/70 |
|
第五周 |
250/630 |
1/5 |
30/100 |
|
第六周 |
25/655 |
1/6 |
27/127 |
|
第七周 |
30/685 |
2/8 |
25/152 |
|
第八周 |
0/685 |
1/9 |
20/172 |
|
第九周 |
61/685 |
1/10 |
22/194 |
|
参考资料
-
相关阅读:
qt中文乱码问题
【Qt开发】QThread 实用技巧、误区----但文档中没有提到
TCP/UDP网络性能测试工具
wireshark怎么抓包、wireshark抓包详细图文教程
INDEX--从数据存放的角度看索引2
杂谈--从基数评估来看问题1
INDEX--从数据存放的角度看索引
疑难杂症--为数据库主文件所在磁盘保留一定量磁盘空间
统计--VARCHAR与NVARCHAR在统计预估上的区别
杂谈--SQL SERVER版本
-
原文地址:https://www.cnblogs.com/zzjzzjzzj/p/6058988.html
Copyright © 2020-2023
润新知