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

学习主要内容

了解系统调用及错误处理方法
理解IO处理及文件系统
掌握Unix/Linux系统级I/O:open close read write seek stat
掌握I/O重定向的方法

1.Linux I/O

Linux I/O:将设备优雅地映射为文件的方式,允许Linux内核引出一个简单、低级的应用接口
输入输出执行方式:
    打开文件
        描述符:内核打开文件时返回的一个小的非负整数
    每个进程开始均有三个打开的文件
        标准输入(描述符为0)
        标准输出(描述符为1)
        标准错误(描述符为2)
    改变当前的文件位置
    读写文件
    关闭文件
文件
    类型:普通文件、目录、套接字

1284381-20181104140411685-1067374362.png

目录层次:image

打开和关闭文件

调用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);

2.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);

3.I/O重定向

Linux shell提供了I/O重定向操作符,允许用户将磁盘文件和标准输入输出联系起来
重定向到磁盘文件foo.txt:linux> ls > foo.txt

I/O重定向使用dup2函数工作

#include <unistd.h>
int dup2(int oldfd,int newfd);

[](https://img2018.cnblogs.com/blog/1284381/201811/1284381-20181104140522460-1506322997

上周错题总结

1.有关磁盘操作,说法正确的是(ACD)

A .对磁盘扇区的访问时间包括三个部分中,传送时间最小。
B .磁盘以字节为单位读写数据
C .磁盘以扇区为单位读写数据
D .读写头总处于同一柱面

2.有关RAM的说法,正确的是(ACDEG)

A .SRAM和DRAM掉电后均无法保存里面的内容。
B .DRAM将一个bit存在一个双稳态的存储单元中
C .一般来说,SRAM比DRAM快
D .SRAM常用来作高速缓存
E .DRAM将每一个bit存储为对一个电容充电
F .SRAM需要不断刷新
G .DRAM被组织为二维数组而不是线性数组

转载于:https://www.cnblogs.com/zl1998827/p/9903793.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值