20145314郑凯杰《信息安全系统设计基础》第9周学习总结 PART B
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 |
参考资料
20145314郑凯杰《信息安全系统设计基础》第9周学习总结 PART B的更多相关文章
- 20165223《信息安全系统设计基础》第九周学习总结 & 第八周课上测试
目录 [第九周学习总结] 教材内容总结 [第八周课上测试] (一)求命令行传入整数参数的和 (二)练习Y86-64模拟器汇编 (三)基于socket实现daytime(13)服务器和客户端 参考资料 ...
- 20145314郑凯杰《信息安全系统设计基础》GDB调试32位汇编堆栈分析
20145314郑凯杰<信息安全系统设计基础>GDB调试32位汇编堆栈分析 本篇博客将对第五周博客中的GDB调试32位汇编堆栈进行分析 首先放上以前环境配置的图: 图1: 测试代码: #i ...
- 20145314郑凯杰《信息安全系统设计基础》第八周复习总结 Part A
20145314郑凯杰<信息安全系统设计基础>第八周复习总结 Part A 学习知识点内容总结 复习线索:http://group.cnblogs.com/topic/73069.html ...
- 20145314郑凯杰《信息安全系统设计基础》第7周学习总结 part B
20145314郑凯杰<信息安全系统设计基础>第7周学习总结 part B 上篇博客反思与深入 首先根据本周第一篇博客,娄老师给我的评论,我开始进行局部性的深入研究: 分为两个步骤,一是知 ...
- 20145314郑凯杰《信息安全系统设计基础》第5周学习总结 part B
20145314郑凯杰<信息安全系统设计基础>第5周学习总结 part B 在前四天的学习中,我主要对课本知识进行了总结,在本周后三天的学习过程中,我进行实践并截图. http://www ...
- 20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现
20145314郑凯杰<网络对抗技术>PE文件病毒捆绑(插入捆绑)的实现 一.本节摘要 简介:每个应用程序内部都有一定的空间(因为文件对齐余留的00字段)可以被利用,这样就可以保证被插入的 ...
- 20145314郑凯杰《网络对抗技术》实验9 web安全基础实践
20145314郑凯杰<网络对抗技术>实验9 web安全基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET ...
- 20145314郑凯杰《网络对抗技术》实验5 MSF基础应用
20145314郑凯杰<网络对抗技术>实验5 MSF基础应用 1.0 MS08_067安全漏洞 1.1 实验目标 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单 ...
- 20145314郑凯杰 《Java程序设计》第10周学习总结
20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...
随机推荐
- 『SharePoint 2010』Sharepoint 2010 Form 身份认证的实现(基于AD)
一.进管理中心,创建一个应用程序,配置如下: 二.填端口号,和选择form身份认证,以及填写成员和角色,其他都默认就可以了 三.使用SharePoint 2010 Management Shell在里 ...
- Java中分页功能源码实例
一.源码(后附使用说明) package com.zhiyou100.crm.util; /** * 分页功能 * @author YangXianSheng * */ public class Pa ...
- 基于spring的shiro配置
shiro是一个特别简单,易用的框架,在此记录一下shiro的使用配置. 首先,创建四张表:user role user_role permission,分别为用户.角色.用户与角色关系表和权限 ...
- Bootstrap学习记录
中文官网 Bootstrap 插件 Bootstrap Multiselect bootstrap-multiselect 的简单使用,样式修改,动态创建option JS组件系列——Bootstra ...
- java讲讲几种常见的排序算法(二)
java讲讲几种常见的排序算法(二) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 堆排序 思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点( ...
- jquery的常用知识点
一.用jquery寻找元素 1.选择器 基本选择器: $("*") $("#id") 用id匹配 $(".class") 用class名匹配 ...
- Javascript闭包学习(Closure)
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的作用域 要理解 ...
- DjangoORM 执行 python manage.py makemigrations出现 no changes detected
出现 no changes detected python manage.py makemigrations No changes detected 为什么出现这种情况: 当执行这条命令,他会去找所有 ...
- mysql5.7新特性探究
一.MySql5.7增加的特性 1.MySql服务方面新特性 1) 初始化方式改变 MySql5.7之前版本初始化方式: scripts/mysql_install_db MySql5.7版本初始化方 ...
- Kafka笔记整理(三):消费形式验证与性能测试
Kafka消费形式验证 前面的<Kafka笔记整理(一)>中有提到消费者的消费形式,说明如下: .每个consumer属于一个consumer group,可以指定组id.group.id ...