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

附录A——错误处理

主要思想

给定某个基本的系统级函数foo,我们定义一个有相同参数、只不过开头字母大写了的包装函数Foo。包装函数调用基本函数并检查错误。如果包装函数发现了错误,那么它就打印一条信息并终止进程。否则,它返回到调用者。注意,如果没有错误,包装函数的行为和基本函数完全一样。

三种不同风格的返回错误:

(1) unix风格
像fork和wait这样的函数返回值既包括错误代码,也包括有用的结果
(2) posix风格
只用返回值来表明成功(0)或者失败(非0)。任何有用的结果都返回在通过引用传递进来的函数参数中。
(3) DNS风格
在失败时返回NULL指针,并设置全局变量h_errno。

实践代码:

1.Cp

将给出的文件拷贝到另一文件或目录中去。
主要用法:cp 【选项】【源文件或目录】【目标文件或目录】
运行结果(cp1.c):
信息安全系统设计基础第十周学习总结_第1张图片

2.Ls

显示文件列表
主要用法:ls 列出该目录下所有子目录和文件
ls –l 列出该目录下所有子目录和文件的详细信息

Ls运行结果(ls1.c):

信息安全系统设计基础第十周学习总结_第2张图片

Ls –l运行结果:(ls2.c):

信息安全系统设计基础第十周学习总结_第3张图片

结果解读:

第一字段:文件属性字段

共有10个字母组成:第一个字符表示文件的类型。如:-表示该文件是一个普通文件

第二字段:

(1)文件硬链接数
如果一个文件不是目录,此时这一字段表示文件所具有的硬链接数。值为1说明这个文件只有一个文件名。即只有一个指向该链接的硬链接。
(2)链接占用的节点
如果是一个目录,则第二字段表示该目录所含子目录的个数。

第三字段:文件(目录)拥有者

该字段表示此文件是属于哪个用户。

第四字段:文件(目录)拥有者所在的组

一个用户可以加入很多个组,但是其中一个主组。

第五字段:文件所占用的空间(以字节为单位)

如果是一个文件夹,则表示的是该文件夹的大小,而不是该文件夹及它下面所有文件的总大小。

第六字段:文件(目录)最近访问(修改)时间

第七字段:文件名

3.who

主要用法:who

Who运行结果(who1.c):

信息安全系统设计基础第十周学习总结_第4张图片

结果解读:

第一列显示用户名称
第二列显示用户的连接方式。Tty表示用户直接连接到电脑上,pts表示远程登录
第三、四列显示日期和时间
第五列显示用户登录ip地址

4.Pwd:显示当前目录的路径名

主要用法:pwd
Pwd运行结果(spwd.c):
信息安全系统设计基础第十周学习总结_第5张图片

5.Fileinfo:显示stat数据结构中的部分信息

运行结果:

信息安全系统设计基础第十周学习总结_第6张图片

解读:

Mode:protection and file type
Link:number of hard links
User:user id of owner
Group:group id of owner
Size:total size,in byte
Modtime:time of last modification
Name:filename

6.Filesize:

运行结果:
信息安全系统设计基础第十周学习总结_第7张图片

7.Setecho&echostate

用法:设置命令行中内容是否可见
运行结果:
信息安全系统设计基础第十周学习总结_第8张图片

补充内容

/bin,/usr/bin,/usr/local/bin:

  • 共同点都用于存放用户可执行文件
  • 不同点:(如下表)
















    /bin 存放系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等
    /usr/bin 存放在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb、wget等
    /uer/local/bin 大部分发行版把这个目录归为PATH ,在这个目录下放了什么可执行的程序,在系统任何地方都可以直接执行,不需要指定路径

遇到的问题和解决方法

这次实践内容遇到的难点主要是分析分析每句代码的作用。系统调用部分真的不好理解。
对于以前的知识还是掌握得太浅薄,很多代码运行出来以后不知道结果是什么意思,类似who,ls -l,fileinfo等,因此我根据所查找到的资料对运行结果进行了解释。

参考资料

《深入理解计算机系统》
老师提供的代码
闫佳歆的博客中关于对cp.c,setecho.c,echostate.c文件的解读

你可能感兴趣的:(信息安全系统设计基础第十周学习总结)