# 2017-2018-1 20155231 《信息安全系统设计基础》第4周学习总结
2017-10-15 22:42
344 查看
2017-2018-1 20155231 《信息安全系统设计基础》第4周学习总结
教材学习内容总结
第10章read (int fd, void buf, size_t n)(返回:若成功,则为读的字节数,若EOF则为0,若出错则为-1) write(int fd, const void buf, size_t n)(返回:若成功则为写的字节数,若出错则为-1)
通过调用rioreadn和riowriten函数,应用程序可以在存储器和文件之间直接传送数据。
文件的元数据,就是关于文件的信息。
int stat(const char *filename, struct stat *buf); int fstat(int fd, struct stat *buf);
描述符表:每个打开的描述符表项指向文件表中的一个表项。 文件表:打开的文件的集合是由一张文件表表示的,所有的进程共享这张表。包括文件位置、引用计数(当前指向该表项的描述符表项数),指向v-node表的指针。 v-node表:包含stat结构中大多数信息。
I/O重定向:使用dup2函数 dup2函数拷贝了描述符表表项oldfd到描述符表项newfd,覆盖描述符表项newfd的内容。若果newfd已经打开了,dup2会拷贝oldfd之前关闭newfd.
标准的I/O 标准I/O库将一个打开的文件模型化为一个流,一个流就是一个指向FILE类型的结构指针,。stdin\stdout\stdeer分别对应标准输入、标准输出、标准错误。
教材学习中的问题和解决过程
问题1:不理解dup2函数的工作原理问题1解决方案:上网查询。 dup2函数跟dup函数相似,但dup2函数允许调用者规定一个有效描述符和目标描述符的id。dup2函数成功返回时,目标描述符(dup2函数的第二个参数)将变成源描述符(dup2函数的第一个参数)的复制品,换句话说,两个文件描述符现在都指向同一个文件,并且是函数第一个参数指向的文件
代码调试中的问题和解决过程
问题1:head问题1解决方案:head从文件头读起,默认读取10行并打印。使用常用的文件操作open、close、read接口,设一换行('\n')换行计数器,做换行计数器的累计,累计到需要显示的数量跳出。
主要代码:
if((rfd = open(filename,O_RDONLY)) == -1) { fprintf(stderr,"%s:",argv[0]); return -1; } while((rlen = read(rfd,rbuf,READSIZE)) > 0){ for(i=0; i < rlen; i++){ if(rbuf[i] == '\n'){ pb = &rbuf[i]; if(++nent == nline) break; } } if(nent == nline){ printf("%.*s",pb-&rbuf[0]+1,rbuf); break; }
运行截图为:
问题2:tail
问题2解决方案:tail从文件尾部读起,取距文件尾的n行,取得第n行距离文件尾的位置即可。所以我们仍需要使用常用的文件操作open、close、read接口,一换行计数器,还需要一个距文件尾的偏移量累加量。
主要代码:
//累计距文件尾的偏移量 if(nent != nline+1){ offs2end += len; } else { offs2end += (&rbuf[len-1]-pb); break; } memset(rbuf,0,READSIZE); } } if(offs_seek == -1) printerr(errno); return offs2end; }
运行截图为:
代码托管
上周考试错题总结
结对及互评
点评模板:
博客中值得学习的或问题:xxx
xxx
...
代码中值得学习的或问题:
xxx
xxx
...
其他
本周结对学习情况
- [结对同学学号1](博客链接) - 结对照片 - 结对学习内容 - XXXX - XXXX - ...
其他(感悟、思考等,可选)
这次的实践od、head、tail,之前没有完成,通过上网查找、像同学问询,基本理解解决了问题。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第四周 | 439/1300 | 1/4 | 30/90 |
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:软件工程软件的估计为什么这么难,软件工程 估计方法
计划学习时间:15小时
实际学习时间:11小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
《深入理解计算机系统V3》学习指导...
相关文章推荐
- # 2017-2018-3 20155337《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155319 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第14周学习总结
- 2017-2018-1 20155202 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第3周学习总结
- 2017-2018-1 20155212 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155311 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155306 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第6周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第13周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第11周学习总结
- 2017-2018-1 学号20155329 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第9周学习总结
- 2017-2018-1 20155321 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第5周学习总结
- 20155236 2017-2018-1 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155323 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第7周学习总结
- 2017-2018-1 20155222 《信息安全系统设计基础》第4周学习总结