• 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
    "); 
            exit(-1); 
        	} 
     	filename = argv[1];
    	if ( stat(filename, &infobuf) == -1 )
    		perror(filename);
    	else
    		printf(" The size of %s is %d
    ",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内容

    参考资料

  • 相关阅读:
    eclipse中开发android程序时,打开layout配置文件自动关闭的问题
    成功用WAP登陆ZBlog发表文章
    java环境变量配置
    Eclipse快捷键大全
    Android SDK 2.2 开发环境搭建
    用EnterpriseLibrary来自动管理与数据库的连接
    一个普通网站发展成大型网站过程中的架构演变史
    有关Silverlight TabControl组件的研究
    有关Silverlight浮动窗体组件的研究
    强大的DataGrid组件[9]_自定义头模板
  • 原文地址:https://www.cnblogs.com/20145208cy/p/6078942.html
Copyright © 2020-2023  润新知