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

一、附录A 错误处理

1.Unix系统中的错误处理:

(1)Unix风格
一些函数返回值既包括错误代码,也包括有用的结果。例如,当Unix风格的wait函数遇到一个错误,返回-1;如果wait成功完成,那么它就返回有用的结果。

(2)Posix风格
任何有用的结果都返回在通过引用传递进来的函数参数中。

(3)DNS风格
gethostbyname和gethostbyaddr函数检索DNS(域名系统)主机条目,在失败时返回NULL指针,并设置全局变量h_errno.

2.错误处理包装函数

(P695~P697函数)

二、第十章剩余

10.7 I/0重定向

通过使用重定向可以允许用户将磁盘文件和标准输入输出文件联系起来。

I/O重定向如何工作?-----使用dup2函数

10.8 标准I/O

标准I/O库将一个打开的文件模型化为一个流。
类型为FILE的流是对文件描述符和流缓冲区的抽象?

10.9 该使用哪些I/O函数?

对流的限制和对套接字的限制

三、练习题:

5.假设磁盘文件foobar.txt由6个ASCII码字符“foobar”组成。那么下列程序的输出是什么?

`#include "csapp.h"

int main()
{
int fd1, fd2;
char c;

fd1 = Open("foobar.txt", O_RDONLY, O);
fd2 = Open("foobar.txt", O_RDONLY, O);
Read(fd2, &c, 1);
Dup2(fd2, fd1);
Read(fd1, &c, 1);
printf("c = %c\n", c);
exit(0);
}
答案:

因为我们将fd1重定向到了fd2,输出实际上是

c = 0.

 

运行代码

 

cp

1.功能: 复制文件或目录

2.将文件file1复制成文件file2(cp file1 file2)

3.fprintf

格式化输出到一个流/文件中

头文件 #include

5.open

打开一个文件
头文件 #include<fcntl.h>

6.write

将内存中的数据写入文件
头文件 #include<unistd.h>

7.create

创建/重写一个文件
头文件 #include<fcntl.h>

8.read

将数据读到缓冲区
头文件 #include<unistd.h>

9.close

关闭一个文件
头文件 #include<unistd.h>


cp 复制(复制为ls3文件)

 

ls

1.功能:列出目标目录中所有的子目录和文件。

2.示例:

 1.列出/home文件夹下的所有文件和目录的详细资料
         命令:ls -l -R /home
 2.列出当前目录中所有以“t开头的目录的详细内容
         命令:ls -l t* 
 3.只列出文件下的子目录
         列出 /opt/soft 文件下面的子目录
         命令:ls -F /opt/soft |grep /$  
         
         列出 /opt/soft 文件下面的子目录详细情况
         命令:ls -l /opt/soft | grep "^d"
 4.列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加"*" 
         命令:ls -AF
 5.计算当前目录下的文件数和目录数
         命令:
                 ls -l * |grep "^-"|wc -l ---文件个数  
                 ls -l * |grep "^d"|wc -l    ---目录个数
 6.列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归
         命令:find $PWD -maxdepth 1 | xargs ls -ld

ls 用来显示文件的详细信息(用户名,群组名,大小,创建时间,读写执行权。ls.tar视频也有讲到)

 

 

who

1.实现原理是,通过查找记录登陆信息的文件来获取系统中登陆过用户的信息。

who 读取想要的信息到存储器中,再用标准输出函数打印到屏幕上,关闭文件

 

file

1.filesize  st_size计算文件的字节数大小

 

2.fileinfo 显示文件信息

 (1)用来实现显示文件信息,建立了一个stat数据结构。

 (2)要先判断命令是否有操作数

 

spwd

spwd 列出当前目录

 

testioctl

ioctl函数

ioctl 用于向设备发控制和配置命令 ,有些命令需要控制参数,这些数据是不能用read / write 读写的,称为Out-of-band数据。
也就是说,
read / write 读写的数据是in-band数据,是I/O操作的主体,而ioctl 命令传送的是控制信息,其中的数据是辅助的数据。

testioctl ioctl 命令传送的是控制信息,其中的数据是辅助的数据。

 

echostate setecho

1.setecho

设置回显位的状态,命令行参数为y则开启,否则关闭。
 1.标准输入的文件描述符为0.
 2.使用tcgetattr()函数和termios结构体可获得标准输入的属性。
 3.使用tcsetattr()函数和termios结构体可以将更改后的属性设置重新写回标准输入。

2.echostate

读取驱动设置并显示回显位的状态。
 1.标准输入的文件描述符为0
 2.使用tcgetattr()函数和termios结构体可以读取到设备的属性
 3.回显位状态放置在termios.c_lflag中

echostate setecho

 

man -k

如:通过man查看who

 

 

四、收获:

这次的作业量比较少,但是因为开始得晚,所以又重蹈了一次覆辙,没有一早开始写。我希望自己可以在以后回顾,继续学牢固。

posted on 2015-11-15 21:46  hzy_dky  阅读(263)  评论(1编辑  收藏  举报