2018-2019-1 20165334 《信息安全系统设计基础》第六周学习总结
课本知识总结
一、文件
- 普通文件:只包含
ASCII
或Unicode
字符的普通文件 - 二进制文件是其他所有文件
二、打开和关闭文件
Open
#<sys/type.h>
#<sys/stat.h>
#<fcntl.h>
int open(char *filename,int flags,mode_t mode);
flags
参数指明了进程打算如何访问这个文件
- O_RDONLY:只读;
- O_WRONLY:只写;
- O_RDWD:可读可写;
mode
参数指定了新文件的访问权限位
三、读和写文件
#include<unistd.h>
ssize_t read(int fd,void *buf,size_t n);//输入
ssize_t write(int fd,const 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);
五、I/O重定向
linux> ls > foo.txt
- 注:标准输出重定向到磁盘文件
foo.txt
- 通过使用
dup2
函数I/O重定向进行工作
#include <unistd.h>
int dup2(int oldfd,int newfd);
dup2
函数复制描述符表表项oldfd
到描述表表项newfd
,覆盖描述符表表项newfd
以前的内容。如果newfd
已经打开了,dup2
会在复制oldfd
之前关闭newfd
.
六、掌握两个重要命令:
- man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
- grep -nr XXX /usr/include :查找宏定义,类型定义
教程过程实践截图