2019-2020-1 20175320 《信息安全系统设计基础》第八周学习总结

2019-2020-1 20175320 《信息安全系统设计基础》第八周学习总结

一、教材学习内容总结

本周的内容为系统级I/O的方式,主要是对各种应用调用的I/O函数进行了了解,以下是本周内容的总结:

系统I/O

  • 打开文件的函数int open(char *filename, int flags, mode_t mode),其中flag是进程对文件的操作行为,mode为访问权限位。函数返回一个文件描述符
  • 关闭文件的函数int close(int fd);
  • 读文件的函数ssize_t Read(int fd, void *buf, size_t count);
  • 写文件的函数ssize_t Write(int fd, const void *buf, size_t count);
  • 无缓冲的读写ssize_t rio_readn(int fd, void *usrbuf, size_t n); ssize_t rio_writen(int fd, void *usrbuf, size_t n);
  • 带缓冲的读写ssize_t rio_readnb(rio_t *rp, void *usrbuf, size_t n); ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen);,其中带缓冲的行读取rio_readlineb与rio_readnb可加从使用,但带缓冲区与不带缓冲区的函数不可以交叉使用,带缓冲区的函数必须基于rio_read函数
  • 读取文件信息的函数int stat(const char *filename, struct stat *buf); int fstat(int fd, struct stat *buf);
  • 读取目录内容的函数DIR *opendir(const char*name);以及struct dirent *readdir(DIR *dirp);其中实际使用中需要反复调用readdir函数

man以及grep工具的使用

这里我使用read函数作为例子。
1、使用man -k read | grep 2命令查看read系统调用。

2、使用man -k read | grep 2 | grep file命令可在1的基础上进一步缩小范围。

3、使用grep -nr xxx /usr/include命令查看宏定义,其中n表示显示行号,r表示递归。下图查看了关键字为MAXLINE的宏定义。

二、教材学习中的问题和解决过程

本周内容多为代码实践,教材中没有遇到问题。

三、代码调试中的问题和解决过程

问题1:运行教材代码1的时候出现如图所示问题。

问题1解决方法:发现是没有添加正确的头文件,添加头文件后正常运行。
问题2:练习10.1输出为-1,与实际不符。
问题2解决方法:没有创建代码中需要的文件,创建文件后正常运行。

问题3:练习10.3编译后出现如下错误:

问题3解决方法:通过man 2 wait查找到所需的头文件,添加后正常运行。

附上练习5运行结果:

四、代码托管

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

本周内容为系统级I/O,通过本章内容使我对系统基础的I/O函数有了了解,这有助于自主实现系统功能,且使得我在无法使用标准库函数的时候有了相应的解决方法。

六、学习进度条

博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 30篇 400小时
第三周 1/1 13/13
第四周 1/2 22/35
第五周 1/3 30/65
第六周 1/4 25/90
第七周 1/5 22/112
第八周 1/6 25/137

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

原文地址:https://www.cnblogs.com/nameless-student/p/11788294.html