zoukankan      html  css  js  c++  java
  • 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)
        改变当前的文件位置
        读写文件
        关闭文件
    文件
        类型:普通文件、目录、套接字
    

    目录层次: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被组织为二维数组而不是线性数组

  • 相关阅读:
    简明python_Day2_字典、集合、模块、类、编程习惯
    测试2T2
    测试2T1
    bzoj2761
    一元三次方程求根公式及韦达定理
    状压DP入门——铺砖块
    高精度模板
    测试1T3
    测试1T2
    测试1T1
  • 原文地址:https://www.cnblogs.com/zl1998827/p/9903793.html
Copyright © 2011-2022 走看看