20145308 《信息安全系统设计基础》第10周学习总结
教材学习内容总结
视频学习:系统调用
ls命令
-l
显示详细信息- man ls
编写程序实现ls
和ls -l
命令
-
如何列出目录内容:Linux中用目录树组织磁盘上的目录或文件
- 目录是一种特殊的文件,内容是文件和目录的名字
- 目录包含很多记录,每条记录代表一个目录或文件
- 目录文件永远不会空,至少包括
.
和..
两项 man -k directory | grep read
、man 3 readdir
-
如何读取文件属性
man -k file | grep status
、man 2 stat
- 文件权限
st_mode
为16位二进制整数 - 模式转化为字符:二进制掩码可以用八进制表示
sys/stat.h
中定义了S_IFREG
和S_IFDIR
两个判断是目录还是文件的两个掩码- 将用户ID转换成用户名:
cat /etc/passwd
命令查看用户列表,再利用strtok函数解决或者使用getpwuid
函数 - 组ID转化为组名,相关文件/etc/group
-
如何判断目录名与文件名
代码调试
cp1.c
fileinfo.c
- 通过调用stat显示出stat中的各项文件信息
filesize.c
- 通过调用stat,显示stat中的st_size
ls1.c
- 通过调用readdir读取stat,将stat中的d_name输出
ls2.c
- 读取文件名和ls1.c相同,通过读取d_name来调用dostat函数产生stat
- 再用d_name和stat来调用show_file_info
- 用mode_to_letters和char调用mode_to_letters将文件权限用字符显示
- uid_to_name显示所属用户
- gid_to_name显示所属用户组
setecho.c
- no设置所有命令为不可见
- yes设置为可见状态
echostate.c
- 将命令设置成可见状态
spwd.c
testioctl.c
who1.c
- 读取UTMP_FILE中的用户信息utmp数组,然后将数组中的数据输出
who2.c
- 代码与who1.c相同,运行结果相同
代码调试中的问题和解决过程
- 运行cp1时,无法运行
- 没有输入源文件和目的文件,没有参数函数无法执行
本周代码托管截图
http://git.oschina.net/yg1022/CSAPP2E
其他
- 本周通过系统调用自己编写了一些Linux系统中已实现功能的代码,通过
,man –k | grep
和man
查看函数的基本信息包括函数的作用及返回值等,然后根据这些信息再自己编写代码
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 1/2 | 25/30 | 学习Linux指令 | |
第二周 | 50/50 | 1/3 | 25/55 | Linux系统下的开发环境 |
第三周 | 20/70 | 1/4 | 25/80 | 信息的表示和处理 |
第五周 | 20/90 | 1/5 | 30/110 | 程序的机器级表示 |
第六周 | 20/110 | 1/6 | 30/140 | 处理器体系结构 |
第七周 | 20/130 | 1/7 | 30/170 | 存储器层次结构 |
第八周 | 0/130 | 2/9 | 10/180 | 期中复习 |
第九周 | 48/178 | 1/10 | 10/190 | 系统级I/O、错误处理 |
第十周 | 407/585 | 1/11 | 10/200 | 系统调用学习 |