博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017-2018-1 20155226 《信息安全系统设计基础》第四周学习总结
阅读量:4479 次
发布时间:2019-06-08

本文共 1940 字,大约阅读时间需要 6 分钟。

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

项目一:课堂提交补充

  1. 参考教材第十章内容

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

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

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

  • 过程(直接改动myod)
  1. 是将定义的*file改变成fd然后标准I/O函数里的fopen换成系统调用的open

  2. 是将标准中的读取下一字符的fgets改变成系统调用的读取整个长度字符的read

  3. 是将标准中的关闭文件的fclose改变成关闭文件描述符close
    查询了相应的man:
  • 1071653-20171015205737059-626445762.png

1071653-20171015205745137-689031936.png

  • 运行截图:

1071653-20171015205612105-855137079.png

项目二 学习教材第十章内容

  • 以读的方式打开一个已经存在的文件:fd=Open("foo.txt",O_RDONLY,0);

  • 打开一个已存在文件,并在后面添加一些数据:fd=Open("foo.txt",O_WDONLY|O_APPEND,0);

  • O_RDONLY:只读

  • O_WRONLY:只写

  • O_RDWR:可读可写

  • st_size成员包含了文件的字节数大小。st_mode成员则编码了文件访问许可位和文件类型。

  • Unix I/O模型是在操作系统内核中实现的。应用程序可以通过诸如open、close、lseek、read、write和stat这样的函数来访问Unix I/O。较高级别的RIO和标准I/O函数都是基于Unix I/O来实现的。

项目三 掌握两个重要命令:

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

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

项目四 完成head,tail的使用,相关API的分析,伪代码,产品代码,测试代码的编写

  • head的使用是显示打开文件的前10行内容而tail的使用是显示打开文件的后10行内容

  • 虚拟机中的测试:

1071653-20171015205903199-1023068109.png

  • 伪代码:
  1. HEAD
打开文件对传入参数进行筛选和转换,参数由字符串转换为整型l。        依次读取文件中字符c;        输出字符c;        得到c为回车时, i++;        关闭文件
  1. TAIL
先打开通过函数lines得到文件行数    对参数l的转换同head.c        依次读取字符,读到回车即j++;        读到j=lines-l时输出读取字符        关闭
  • 产品代码
#include 
#include
#include
#include
#include
#include
#include
int main(int argc,char *argv[]){ ssize_t read(int fd, void *buf, size_t count);int fd=open(argv[2],O_RDONLY,0); int l; int i; char ch; l=atoi(argv[1]); for(i=0;i
#include 
#include
#include
#include
#include
#include
#include
int lines(){ ssize_t read(int fd, void *buf, size_t count); int i=0; char ch; do { ch=read(fd); if(ch=='\n') i++; }while(ch!=EOF); close(file); printf("%d\n",i); return i;}int main(int argc,char *argv[]){ FILE *fl=open(argv[2],"r"); int len= lines(fd); int j=0; int l=atoi(argv[1]); char c; fl=open(argv[2],"r"); while(j
  • 截图

1071653-20171015205817949-1891477688.png

1071653-20171015205826262-221590352.png

1071653-20171015205832605-791627694.png

1071653-20171015205838012-936164514.png

1071653-20171015205910434-188576385.png

  • 问题

1071653-20171015205929059-1280268026.png

转载于:https://www.cnblogs.com/20155226thy/p/7674216.html

你可能感兴趣的文章
[转]Android的Handler总结
查看>>
初始化一个新的服务器
查看>>
ServletConfig
查看>>
顺序栈用C语言实现
查看>>
Python批量获取京东商品列表信息
查看>>
2017.7.10 C组总结
查看>>
SourceTree下载 及使用
查看>>
MyEclipse下安装FatJar打包工具
查看>>
什么是域名-视频讲解?
查看>>
大道至简第六章-从编程到工程
查看>>
单元测试——隔离神器:mockito
查看>>
【leetcode】Binary Tree Zigzag Level Order Traversal
查看>>
Python网络数据采集pdf
查看>>
《CSS3.0(飘零雾雨版)》
查看>>
Microsoft Dynamics CRM 里的account 左侧导航栏连接报表
查看>>
一次域渗透尝试
查看>>
个人工作总结03(冲刺二)
查看>>
BLE 5协议栈-通用属性规范层(GATT)
查看>>
第3周学习进度
查看>>
【★】EIGRP终极解析!
查看>>