您的位置:首页 > 其它

20145208 《信息安全系统设计基础》第十周学习总结

2016-11-18 19:50 197 查看

20145208 《信息安全系统设计基础》第十周学习总结

视频学习

目录文件永远不会为空,每个目录至少包含两个特殊项
.
..
,其中
.
表示当前目录,
..
表示上一级目录。

相关系统调用:

man -k
:将列出整个man page中和“所查找单词”相关的内容,是一种模糊查找。

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

ls -l
为例:可以显示当前目录下目录或文件的详细属性信息



man 1 ls
查看一下ls指令解释



代码调试

代码cp1.c

进行复制文件的操作,需要有源文件和目的文件,第一次命令没有加入所以没有正常完成复制文件的操作



cp帮助文档



代码fileinfo.c

用来实现显示文件信息。先判断命令是否有操作数,有的话才能继续进行下去,如果没有报错就打印出来相关文件信息,报错就用perror将报错信息打印出来。

同样需要输入要查看的文件才会有信息打印出来





查看stat函数的帮助文档:



各宏变量的意义:

mode:st_mode 文件的类型和存取的权限



links:st_nlink 连到该文件的硬链接数目,刚建立的文件值为1



user:st_uid 用户ID



group:st_gid 组ID



size:st_size 文件字节数



modtime:st_mtime 最后一次修改时间



代码filesize.c

原本的代码是指定查找
etc/passwd
文件的大小,所以后面输入什么文件名都是一样的大小



代码中文件路径如下,
star()
函数前面的参数是文件路径,后面是存入缓存的名称:

stat( "/etc/passwd", &infobuf)


为了测试我的猜测,我修改路径为
cp1.c
的地址,结果如下:



可以看到测试结果和实际大小相同,所以只要把文件名设为键入赋值的就可以了



把代码修改如下:

#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>    //exit()
int main(int argc, char * argv[])
{
struct stat infobuf;
char *filename;

if (argc != 2) {
printf("Please input filename\n");
exit(-1);
}
filename = argv[1];
if ( stat(filename, &infobuf) == -1 )
perror(filename);
else
printf(" The size of %s is %d\n",filename, infobuf.st_size );
}


再次编译运行得到想要的效果



代码ls1.c

简单的显示所在文件夹中的文件及文件夹列表



代码ls2.c

显示所在文件夹中的文件及文件夹详细信息的列表



代码setecho.c

可以改变符号显示状态,no是不显示符号,yes是显示



可以看到no指令后输入的命令看不见,状态值为0;yes指令后恢复可见,状值态为1.

代码echostate.c

用来检查命令行中的提示符是否显示的,如果显示,输入的命令都可见,不显示则表示输入的命令不可见



tcgetattr:tcgetattr函数用于获取与终端相关的参数。参数fd为终端的文件描述符,返回的结果保存在termios结构体中



tcsetattr:tcsetattr函数tcsetattr函数用于设置终端参数。



perror:打印错误信息



此外,为了更好的理解函数返回值的过程,用grep命令查看了其中的几个宏变量:

ECHO:显示输入字符,值为0000010



c_lflag:本地模式标志,控制终端编辑功能



代码spwd.c

显示出所在目录



代码testioctl.c

计算当前命令行窗口的行列数大小

不同大小的变化如下:







查看isatty和ioctl函数的帮助文档:

isatty:判断文件描述词是否是为终端机,如果参数所代表的文件描述词为一终端机则返回1,否则返回0。



ioctl:是设备驱动程序中对设备的I/O通道进行管理的函数,其中d是用户程序打开设备时使用open函数返回的文件标示符,request是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的有无和request的意义相关



代码who1.c

从UTMP_FILE文件中读取系统中用户信息



代码who2.c

此代码和who1.c相同……

代码托管

代码托管链接

代码托管链接



代码行数截图



学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周0/01/220/20学会了虚拟机安装和Ubuntu的基本操作
第二周56/561/320/40学会了Ubuntu终端下的C语言编写
第三周110/1661/430/70熟悉了gdb的基本操作,了解了计算机信息表示和处理
第四周110/1661/510/80复习了前几周的知识
第五周42/2082/630/110学习了linux下的汇编语言内容
第六周447/6551/730/140了解了linux下Y86模拟器的使用
第七周71/7261/820/160学习了局部性原理和缓存思想的应用
第八周0/7262/1020/180复习了之前的学习内容并总结
第九周133/8592/1220/200学习了系统级I/O的内容,了解了函数的内在
第十周407/12661/1330/230对代码进行分析调试,又理解一些系统级的I/O内容

参考资料

2016-2017-1 《信息安全系统设计基础》教学进程

代码托管链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: