• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

20145208蔡野

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

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/0 1/2 20/20 学会了虚拟机安装和Ubuntu的基本操作
第二周 56/56 1/3 20/40 学会了Ubuntu终端下的C语言编写
第三周 110/166 1/4 30/70 熟悉了gdb的基本操作,了解了计算机信息表示和处理
第四周 110/166 1/5 10/80 复习了前几周的知识
第五周 42/208 2/6 30/110 学习了linux下的汇编语言内容
第六周 447/655 1/7 30/140 了解了linux下Y86模拟器的使用
第七周 71/726 1/8 20/160 学习了局部性原理和缓存思想的应用
第八周 0/726 2/10 20/180 复习了之前的学习内容并总结
第九周 133/859 2/12 20/200 学习了系统级I/O的内容,了解了函数的内在
第十周 407/1266 1/13 30/230 对代码进行分析调试,又理解一些系统级的I/O内容

参考资料

  • 2016-2017-1 《信息安全系统设计基础》教学进程
  • 代码托管链接

posted on 2016-11-18 19:50  20145208蔡野  阅读(259)  评论(3)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3