2017-2018-1 20155234 《信息安全系统设计基础》第四周课堂实践

man命令

这周上课老师教了我们俩个命令

  • man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
  • grep -nr XXX /usr/include :查找宏定义,类型定义
    这俩个命令可以帮助我们查找系统内部函数的功能及其应用

myod

只需要讲普通myod中的*file改为fd fopen改为open fclose改为close fgets改为read就是所要求的系统调用myod了

上课时因为上周并没有写myod并且自己的编程能力很差,所以导致在课上的时间都在编写myod没能及时完成老师的任务。

  • 伪代码
for(行数小于输入行数;行数++)
{ if(字符不为回车)
依次输出字符;
}```
通过man命令查找head的用处:
-n x:显示文件的前x行
-c x:显示文件的前x个字节
-c -x:显示文件除了最后x个字节以外的内容:
-n -x:显示文件除了最后几行的全部内容
-v:显示文件名
-q:隐藏文件名
![](http://images2017.cnblogs.com/blog/1072275/201710/1072275-20171013114444543-711716266.png)
![](http://images2017.cnblogs.com/blog/1072275/201710/1072275-20171013115849309-777711786.png)
![](http://images2017.cnblogs.com/blog/1072275/201710/1072275-20171015181425637-579571907.png)
##tail
通过man命令查找tai:
-f:循环读取
-q:不显示文件名
-v:显示文件名
-c x: 显示最后x字节数
-c +x:显示从x开始显示字节
-n x:显示最后x行数
-n +x:从x行开始显示文件
-s:与-f合用每次反复的间隔休眠S秒
- 伪代码
```for(当文件没读完,++)
得到文件行数
通过文件行数-输入的参数得到从第几行开始
打印字符```
![](http://images2017.cnblogs.com/blog/1072275/201710/1072275-20171013121631027-177531902.png)
![](http://images2017.cnblogs.com/blog/1072275/201710/1072275-20171013121528559-1864517247.png)
![](http://images2017.cnblogs.com/blog/1072275/201710/1072275-20171015181524059-548722448.png)
##在编程中的问题
head和tail的功能是要输出指定的前几行和后几行,我选择用回车符来判断行数。
命令行输入的是字符型需要转化为整型才能够编译通过,我用的是a=(int)argv[1]来强制转化类型。
###[代码托管](https://git.oschina.net/bestiisjava2017/zxm5234)
##第十章主要学习系统级I/O。
 - 打开和关闭文件
    打开文件:int open(char *filename, int flags, mode_t mode)
    flags参数指明了进程打算如何访问这个文件:
    O_RDONLY:只读
    O_WRONLY:只写
    O_RDWR:可读可写
    flags参数也可以是一个或者更多位掩码的或:
    O_CREAT:如果文件不存在,就创建它的一个截断的文件
    O_TRUNC:如果文件已存在,就截断它
    O_APPEND:在每次写操作前,设置文件的位置到文件的结尾处
    关闭文件
    int close(int fd)
 - 读和写文件
1.读 read
函数原型:
include <unistd.h>
ssize_t read(int fd, void *buf, size_t n);
2.写 write
函数原型:
include <unistd.h>
ssize_t write(int fd, void *buf, size_t n);
附录A主要讲错误处理
 - Unix系统中的错误处理:
 - 主要有Unix风格的错误处理;
 - Posix风格的错误处理;
 - GAI风格的错误处理。
posted @ 2017-10-15 22:47  zdyt  阅读(143)  评论(1编辑  收藏  举报