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

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

代码调试中的问题和解决过程

cp

类似于cp的cp1命令,用来复制文件或目录

cp的关键步骤:

打开源文件

创建目标文件

把源文件读入缓冲区

把缓冲区内容写入目标文件

关闭源文件和目标文件

此外,代码中还包含了一些错误的提示,例如打开错误,创建错误,用法错误等

setecho & echostate

下图为设置echo为no之后键盘的输入不显示,但依然可以执行命令

当echo为no是 echostate显示为关闭状态

代码分析#include        <stdio.h>
#include        <stdlib.h>
#include        <termios.h>

#define  oops(s,x) { perror(s); exit(x); }

int main(int argc, char *argv[])
{
        struct termios info;
        if (argc == 1) //后面没有带参数的话就不做任何操作,退出
        exit(0);

        if (tcgetattr(0,&info)==-1)//tcgetattr函数用于获取与终端相关的参数。参数fd为终端的文件描述符,返回的结果保存在termios 结构体中,这里fd为0,是标准输入。这句用于读取设备属性
            oops("tcgettattr", 1);

        if ( argv[1][0] == ‘y‘ )//如果运行命令后面的参数第一个字母是“y”,执行“设置打开提示符”的命令
                info.c_lflag |= ECHO ;/*打开提示符*/
        else//对其它所有的参数都执行“设置隐藏提示符”的命令
                info.c_lflag &= ~ECHO ;/*隐藏提示符*/

        if ( tcsetattr(0,TCSANOW,&info) == -1 )//将修改后的参数写回设备
               oops("tcsetattr",2);

        return 0;
}

fileinfo & filesize

fileinfo的功能与ls -l的功能类似,可以显示文件的具体信息

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

下图为一些用户权限的数字表示

filesize显示的文件的大小,但是它默认的是/etc/passwd的大小,应该是可以改路径的

ls

感觉这两个ls的功能远不及系统级ls,代码中好像是利用dir来实现功能的

还是系统的ls功能多

ls -l:显示文件信息
ls -a:列出文件目录
ls -lu:最后访问时间
ls -s:以块为单位的文件大小
ls -t:按时间排序
ls -F:显示文件类型

spwd

显示当前目录,我在共享文件夹中试了一下有错误,换了个文件夹就可以了

testioctl

获得终端设备的窗口大小,两个不同的终端大小

who

两个代码运行结果类似,都是通过读取utmp文件来显示用户信息

本周代码托管

将源代码都放到了src文件夹中,重新git了一下

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

本周的学习内容主要是一些系统级调用,这些代码有的感觉没有系统级调用那么强大的功能,所以还需要不断地完善

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 100/100 1/2 10/10
第二周 150/200 2/4 8/18
第三周 200/250 1/5 5/23
第五周 50/300 1/6 9/32
第六周 20/320 1/7 8/40
第七周 20/340 1/8 6/46
第八周 60/400 2/10 6/52
第九周 80/480 1/11 8/60
第十周 60/540 2/13 6/66

参考资料

时间: 2024-10-12 16:10:35

20145311 《信息安全系统设计基础》第十周学习总结的相关文章

20135213——信息安全系统设计基础第十周学习总结

第八章异常控制流 一.学习目标 1. 了解异常及其种类2. 理解进程和并发的概念3. 掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,4.  理解数组指针.指针数组.函数指针.指针函数的区别5. 理解信号机制:kill,alarm,signal,sigaction6. 掌握管道和I/O重定向:pipe, dup, dup2 二.学习资源 1. 教材:第八章<异常控

信息安全系统设计基础第十周学习总结-吕松鸿

第八章 异常控制流 平滑:指在存储器中指令都是相邻的. 突变:出现不相邻,通常由诸如跳转.调用.和返回等指令造成. 异常控制流ECF:即这些突变. 关于ECF: 1.ECF是操作系统用来实现I/O.进程和虚拟存器的基本机制 2.应用程序通过使用一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务 3.ECF是计算机系统中实现并发的基本机制 4.软件异常机制——C++和Java有try,catch,和throw,C中非本地跳转是setjmp和longjmp 第一节 异常 异常是异常控制流的一种

20135210——信息安全系统设计基础第十周学习总结

Who命令 who 读取想要的信息到存储器中,再用标准输出函数打印到屏幕上,关闭文件. 查看登录前的用户 -who am i: 列出登录的用户 -who或-w. Unix系统中的错误处理 unix风格:例如fork函数和外套函数,返回值既包括错误代码,又包括有用的结果. if((pid = wait(NULL))<0) { fprintf(stderr,"wait error:%s\n",strerror(errno));//将errno设置为指向错误原因的代码 exit(0);

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

part1 1.如何查看当前登录的用户? -who am i 如何列出登录的用户? -who或-w 如何注销掉用户? -pkill -kill -t 用户名或-skill -KILL -v 用户名 2.目录操作 ①如何查看当前工作目录? -pwd ②如何改变当前工作目录进入下一级目录? -cd 下一级/ ③如何返回当前工作目录的父目录? -cd .. ④如何返回根目录? -cd / <<在Linux的目录结构中“.”表示当前目录,“..”表示当前目录的父目录,“/”表示根目录. ⑤当用户以个人

20135234马启扬-——信息安全系统设计基础第十周学习总结

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h> #define BUFFERSIZE 4096#define COPYMODE 0644 void oops(char *, char *); int main(int argc, char *argv[]){ int in_fd, out_fd, n_chars; char buf[BUFFERSIZE];

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

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E

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

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分

2017-2018-1 20155228 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155228 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 常见的存储技术 RAM 随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的.静态 RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多.SRAM用来作为高速缓存存储 器,既可以在CPU芯片上,也可以在片下.DRAM用来作为主存以及图形系统的帧缓冲 区.典型地,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆 字节. SRAM将每

# 2018-2019-1 20165225《信息安全系统设计基础》第一周学习总结

2018-2019-1 20165225<信息安全系统设计基础>第一周学习总结 教材学习内容总结 vim的用法 命令行输入vimtutor即可随时查看: linux系统下文件的转换: gcc hello.c => 编译hello.c源程序,出现a.out文件 gcc -o hello hello.c => 编译hello.c源程序,出现hello文件 od -tc -tx1 hello.c => 按单字节查看文件内容 gcc -E hello.c -o hello.i =&g

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较