2017-2018-1 20155316 《信息安全系统设计基础》第4周学习总结

课堂实验 - myod-系统调用版本

内容

  1. 参考教材第十章内容

  2. 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名

  3. 不要把代码都写入main函数中

  4. 要分模块,不要把代码都写入一个.c中

  5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

截图与代码

学习中遇到的问题与解决过程

  • 问题1:在加载链接了共享库的模块的时候,出现了找不到共享库的错误(如下图)

  • 问题1解决方案:在网上有查找下资料,大致说的都是

  • 首先在目录下有共享库,所以第一种可能排除,那么最大的可能是第二种:程序找不到该共享库文件

  • 于是我查看了下我的makefile2文件,看看我是怎么链接共享库的:

  • 回想起在学习教材的时候,对于地址写的更详细一点,例如:./main.c

  • 于是我将第二条命令修改为gcc main.c ./libod.so -o prog2l

  • 然后运行一遍命令./prog2l main.c,结果顺利运行出来了

  • 问题2:关于用系统调用编写myod的时候,用man 2 open找不到该函数

  • 问题2解决方案:换一个虚拟机就可以了(原先用的是实验楼的环境,现改成了VritualBox上的虚拟机)

教材学习内容总结

  • 系统级I/O
  • 错误处理

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

  • 问题1:教材中的数据类型size_t是什么意思?
  • 问题1解决方案:教材中对此的解释是“表示数据结构大小的首选数据类型”,对此并没有很深的理解,于是百度了一下,解释可归纳为:

一个基本的无符号整数的C / C + +类型, 它是sizeof操作符返回的结果类型, 该类型的大小可选择。因此,它可以存储在理论上是可能的任何类型的数组的最大大小。
--来自百度百科

  • 也就是说可以用size_t类型存储任意类型大小的数组

  • 问题2:描述符究竟是什么东西?

  • 问题2解决方案:看了一下教材,大概可以这么概括:应用程序向内核申请打开某文件时,内核返回该文件的描述符,应用程序可用它来标识文件,而对于这个打开文件的所有信息则有内核来记录。

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

  • 贴士1:教材P626页有引用csapp.h的头文件,但这个是系统自带的吗?
  • 解说1:试着直接这样编译运行,结果提示编译错误
  • 在百度搜索csapp.h,结果显示
  • 这说明是自己编写出来的头文件,并不是系统自带的
  • 想编译成功,需要先将后面零碎的对csapp.h的代码合并编写完才可以

代码托管

上周考试错题总结

结对及互评

本周结对学习情况

- [20155308](博客链接)
- 结对学习内容
    - 课堂作业学习

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/1
第二周 300/500 2/3
第三周 500/1000 1/4
第四周 921/1300 1/5
  • 计划学习时间:10小时

  • 实际学习时间:6小时

  • 改进情况:运动会结束,会有更多时间来学习了

参考资料

posted @ 2017-10-15 20:00  protectmonarch  阅读(330)  评论(2编辑  收藏  举报