20145314郑凯杰《信息安全系统设计基础》第9周学习总结 PART B

明确教材学习目标

  • 注意每个系统调用的参数、返回值,会查帮助文档

  • 阅读教材,完成课后练习(书中有参考答案),考核:练习题把数据变换一下

  • 学习视频,掌握两个重要命令:

    man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用

    grep -nr XXX /usr/include :查找宏定义,类型定义

  • 教材中相关代码运行、思考一下,读代码的学习方法见「代码驱动的程序设计学习」。

  • 代码重点:课程演示代码

这些内容在上一周的博客中我已经概括了,链接如下:

http://www.cnblogs.com/5314zkj/p/6052730.html

教材学习内容总结

本章知识点补充

标准I/O

标准I/O库将一个打开的文件模型化为一个流,也就是一个指向FILE类型的结构的指针。

#include <stdio.h>
extern FILE *stdin; /*标准输入,文件描述符为0*/
extern FILE *stdout; /*标准输出,文件描述符为1*/
extern FILE *stderr; /*标准错误,文件描述符为2*/

类型为file的流是对文件描述符和流缓冲区的抽象,目的是使开销较高的Unix I/O系统调用的数量尽可能小。

错误处理

错误处理包装函数:给定某个基本的系统级函数foo,定义一个有相同参数的包装函数Foo。包装函数调用基本函数并检查错误。如果发现错误就打印一条信息并终止进程,否则返回调用者。即如果没有错误,包装函数的行为与基本函数完全一样。

包装函数被封装在一个源文件(csapp.c)中,被编译和链接到每个程序中。

Unix风格的错误处理

函数返回值既包括错误代码又包括有用的结果。如果遇到错误就返回-1,并将全局变量errno设置为指明错误原因的错误代码。如果成功就返回有用的结果。

if((pid = wait(NULL)) < 0) {
fprintf(stderr,"wait error:%s\n",strerror(errno));
exit(0);
}

Posix风格的错误处理

只用返回值来表明成功(0)或者失败(非0)。任何有用的结果都返回在通过引用传递进来的函数参数中。

if((retcode = pthread_create(&tid,NULL,thread,NULL)) != 0) {
fprintf(stderr,"pthread_create error:%s\n",strerror(retcode));
exit(0);
}

DNS风格的错误处理

在失败时返回NULL指针,并设置全局变量h_errno。

if((p = gethostbyname(name)) == NULL) {
fprintf(stderr,"gethostbyname error:%s\n:",hstrerror(h_errno));
exit(0);
}

复习上课内容

老师在上课时之间演示过man -k的使用 ,这里对read grep进行搜索

图5:

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

问题1 头文件出错###

图1:

编译书上代码时,头文件出错。

原因:csapp.h不是计算机自带的

从网上下载后,问题解决。

csapp.h和csapp.c:

下载地址http://csapp.cs.cmu.edu/public/code.html

将下载好的两个文件移到/usr/include文件夹

代码上传及托管情况

图2:

图3:

图4:

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第七周 1300/1750 11/11 140/140
第八周 1700/2000 13/13 160/160
第九周 2000/2400 14/15 180/180
第十周 2500/2800 15/17 0/200

参考资料

最新文章

  1. ios开发之Info.plist文件相关配置
  2. 莫比乌斯环-vtkTriangleStrip
  3. php上传大文件,提示出错
  4. vsftp搭建+虚拟用户
  5. 通过Class获取标签,兼容的几种思路
  6. CentOS7安装elk
  7. mysql主从切换摘要
  8. retain,copy,assign及autorelease ,strong,weak
  9. android加固签名工具(源码下载)
  10. 10件在PHP 7中不要做的事情
  11. SQL server 性能调优
  12. C++中关于const的思考
  13. SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏
  14. weex 语法高亮
  15. hdu 5493 Queue treap实现将元素快速插入到第i个位置
  16. LKD: Chapter 9 An Introduction to Kernel Synchronization
  17. Android MTK平台最完备的开机动画修改教程
  18. LINQ、Lambda与委托
  19. Django用普通user对象登录的必须准备步骤
  20. CentOS添加明细路由

热门文章

  1. SSH电力项目一 搭建Hibernate框架
  2. mybatis设置数据库连接的密码不需要加密
  3. Jwt在Java项目中的简单实际应用
  4. angular 2+ 路由守卫
  5. odex反编译dex异常 Cannot locate boot class path file /system/framework/core.odex
  6. 网络编程 - UDP协议
  7. 有些有IP的项目,公司不至于测试不行砍项目,但是会砍项目组,把IP收回交给别的团队做(因为一旦一测数据太差,公司(投资人)会判断在二测的时候数据能提升到什么样。说白了就是历史信用问题)
  8. docker网络实践
  9. Pandas -- SettingwithCopyWarning 原理和解决方案(转)
  10. Flask之session相关