zoukankan      html  css  js  c++  java
  • 20145221 《信息安全系统设计基础》第10周学习总结

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

    教材学习内容总结

    • 20145221 《信息安全系统设计基础》第9周学习总结

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

    • 详细属性说明:

      • 第一位表示类型,-代表文件,d代表目录;
      • 二至四位代表文件创建者权限,-代表无权限,r代表具有读权限,w代表具有写权限,x代表具有执行权限;
      • 五至七位代表同组用户权限;
      • 八至十位代表其他用户权限。
    • 第二列为文件硬链接数,或目录、子目录数。若为目录的,该字段至少是2,表示该目录下至少有两个子目录

    • 第三列为所有者

    • 第四列为所属用户组

    • 第五列为文件大小

    • 第六列为文件最后修改时间

    • 第七列为文件名

    • 编写ls三大问题

      • 1、如何列出目录内容
      • 2、如何读取文件属性
      • 3、如何判断目录名与文件名
    • 目录文件永远不会为空,因为每一个目录会表示当前文件夹,以及他的父文件夹,所以每个目录至少包含两个特殊项...,其中.表示当前目录,..表示上一级目录

    实践部分

    who.c

    cp1.c

    • 第一遍的输入是错误的,第二遍的输入正常

    • 通过错误提示,我们可以观察其报错部分的代码,调用了oops()自定义函数

    void oops(char *s1, char *s2)
    {
    	fprintf(stderr, "Error: %s ", s1);
    	perror(s2);
    	exit(1);
    }
    
    • 经查找相关资料可以得到,perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno(这里的说法不准确,errno是一个宏,该宏返回左值) 的值来决定要输出的字符串。
    • 在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。
    • 这就是函数自动输出错误信息的原因。

    echostate.c

    • 功能:查看在命令行中输入命令时是否可见,可见返回1,否则返回0
      • echo is on:命令可见
      • echo is off:命令不可见
    • 运行截图:

    setecho.c

    • 功能:设置echo的状态,用来改变输入指令是否可见。

      • 输入y(或是以y开头的一串字符),命令可见
      • 否则(即输入不以y开头的字符),命令不可见
    • 从上图可以看出,如果命令不可见,那么我们键入的命令将不会在终端中显示出来

    fileinfo.c

    • 功能:查看文件信息

    • 其中各变量的含义是:(通过grep -nr XXX /usr/include可查询)

      • mode:st_mode 文件的类型和存取的权限
      • links:st_nlink 连到该文件的硬链接数目,刚建立的文件值为1
      • user:st_uid 用户ID
      • group:st_gid 组ID
      • size:st_size 文件字节数
      • modtime:st_mtime 最后一次修改时间

    filesize.c

    • 功能:查看文件大小

    • 此时注意到其中的代码部分,有stat()函数,此时运用指令:man -k stat,发现有关项

    • 接着输入指令:man 2 stat,一窥究竟

    • 通过上图可以很清楚的发现stat()函数的工作原理(需要的参数类型以及返回值等等),所以我们可以通过修改代码,增加一个输入部分,使得用户可以查找任意想查找的文件大小

    ls1.c

    • 功能:显示指定目录下的所有文件(默认为当前目录)

    ls2.c

    • 显示指定目录下的文件详细信息(默认为当前目录)

    • 其中也大量用到了前面实验中的stat结构体中的成员变量

    spwd.c

    • 功能:显示当前目录路径

    testioctl.c

    • 查看窗体大小信息,先是正常状态,然后我将终端最大化,显示不同结果。

    本周代码托管

    • 本周托管代码:

    • 代码统计如下:

    其他(感悟、思考等,可选)

    • 本周的学习任务主要是对上一周学习的巩固,通过代码实践,帮助我们更好地理解本章的内容;并且通过亲身的编译链接执行,慢慢体会到了Linux的奇妙之处,强大的系统调用,可以帮助我们完成更多的事情,有一种通过C语言通过代码“操控”系统的感觉。但这种体验是要建立在熟悉使用各种Linux查询指令的基础上的,只有学会怎样搜索有用信息、学会思考分析,才能应对更多的陌生的指令,并让它们为我们所用。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20 学习了Linux常用命令
    第二周 79/279 1/3 30/50 了解vim,gcc,gdb基本操作
    第三周 182/461 1/4 25/75 更深层次了解信息处理
    第四周 36/497 2/6 3/78 第二章知识简单的运用
    第五周 194/691 1/7 28/106 汇编知识与了解逆向
    第六周 520/1211 1/8 27/133 Y86处理器,了解ISA抽象
    第七周 85/1296 1/9 21/153 理解了局部性原理
    第八周 0/1296 2/11 20/173 期中总结
    第九周 234/1530 2/13 30/203 了解Linux是怎样操作文件
    第十周 453/1983 2/15 20/223 系统调用深入实践

    参考资料

  • 相关阅读:
    C#变量初始化
    Mcrosoft中间语言的主要特征
    去除json数据的某些键值对
    ASP.NET MVC 之控制器与视图之间的数据传递
    ASP.NET MVC 路由进阶(之二)--自定义路由约束
    ASP.NET WEB API 初探
    Linux学习三部曲(之三)
    Linux学习三部曲(之二)
    Linux学习三部曲(之一)
    C# 3.0 特性之扩展方法
  • 原文地址:https://www.cnblogs.com/20145221GQ/p/6083820.html
Copyright © 2011-2022 走看看