2018-2019-1 20165330 《信息安全系统设计基础》第六周学习总结
Posted besty-zyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-2019-1 20165330 《信息安全系统设计基础》第六周学习总结相关的知识,希望对你有一定的参考价值。
学习目标
- 了解系统调用及错误处理方法
- 理解IO处理及文件系统
- 掌握Unix/Linux系统级I/O:
open
close
read
write
seek
stat
- 掌握
I/O
重定向的方法
学习内容
Linux I/O
Linux I/O
:将设备优雅地映射为文件的方式,允许Linux内核引出一个简单、低级的应用接口- 输入输出执行方式:
- 打开文件
- 描述符:内核打开文件时返回的一个小的非负整数
- 每个进程开始均有三个打开的文件
- 标准输入(描述符为0)
- 标准输出(描述符为1)
- 标准错误(描述符为2)
- 改变当前的文件位置
- 读写文件
- 关闭文件
- 打开文件
- 文件
- 类型:普通文件、目录、套接字
- 目录层次:
- 打开和关闭文件
- 调用
open
函数打开一个已存在的文件或创建一个新文件
int open(char *filename,int flags,mode_t mode);
flags
参数指明打开文件方式:- O_RDONLY:只读
- O_WRONLY:只写
- O_RDWR:可读可写
flags
参数提供额外提示:- O_CREAT:文件不存在,创建一个截断(空)文件
- O_TRUNC:文件已存在就截断它
- O_APPEND:在每次写操作前,设置文件位置到文件的结尾处
- 关闭文件:
int close(fd);
- 调用
- 读和写文件
- 调用
read
和write
函数执行输入输出
size_t read(int fd,void *buf,size_t n); ssize_t write(int fd,void *buf,size_t n);
- 调用
- 类型:普通文件、目录、套接字
RIO包
无缓冲的输入输出函数
#include "csapp.h" ssize_t rio_readn(int fd,void *usrbuf,size_t n); ssize_t rio_writen(int fd,void *usrbuf,size_t n);
带缓冲的输入函数
#include "csapp.h" void rio_readinitb(rio_t *rp,int fd); ssize_t rio_readlineb(rio_t *rp,void *usrbuf,size_t maxlen); ssize_t rio_readnb(rio_t *rp,void *usrbuf,size_t n);
- 读取文件元数据
- 调用
stat
和fstat
函数检索文件的信息(元数据)
#include <unistd.h> #include <sys/stat.h> int stat(const char *filename,struct stat *buf); int fstat(int fd,struct stat *buf);
- 读取目录内容
- 返回目录流的指针
#include <dirent.h> #include <sys/stat.h> DIR *opendir(const char *name);
- 返回流dirp中下一目录项的指针
#include <dirent.h> struct dirent *readdir(DIR *dirp);
- 关闭流并释放所有资源
#include <dirent.h> int closedir(DIR *dirp);
I/O重定向
- Linux shell提供了I/O重定向操作符,允许用户将磁盘文件和标准输入输出联系起来
- 重定向到磁盘文件
foo.txt
:linux> ls > foo.txt
I/O重定向使用
dup2
函数工作#include <unistd.h> int dup2(int oldfd,int newfd);
ch06课下测试错题总结
- 有关磁盘操作,说法正确的是()
A .
对磁盘扇区的访问时间包括三个部分中,传送时间最小。
B .
磁盘以字节为单位读写数据
C .
磁盘以扇区为单位读写数据
D .
读写头总处于同一柱面
正确答案:A C D 书P409
- 有关RAM的说法,正确的是()
A .
SRAM和DRAM掉电后均无法保存里面的内容。
B .
DRAM将一个bit存在一个双稳态的存储单元中
C .
一般来说,SRAM比DRAM快
D .
SRAM常用来作高速缓存
E .
DRAM将每一个bit存储为对一个电容充电
F .
SRAM需要不断刷新
G .
DRAM被组织为二维数组而不是线性数组
正确答案: A C D E G 书P400
以上是关于2018-2019-1 20165330 《信息安全系统设计基础》第六周学习总结的主要内容,如果未能解决你的问题,请参考以下文章
2018-2019-1 20165330 《信息安全系统设计基础》第二周学习总结
2018-2019-1 20165330 《信息安全系统设计基础》第十一周学习总结