码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-11-04 01:43:47      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:include   mod   需要   优雅   文件的   lin   位置   closed   无法   

学习目标

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

学习内容

Linux I/O
  1. Linux I/O:将设备优雅地映射为文件的方式,允许Linux内核引出一个简单、低级的应用接口
  2. 输入输出执行方式:
    • 打开文件
      • 描述符:内核打开文件时返回的一个小的非负整数
    • 每个进程开始均有三个打开的文件
      • 标准输入(描述符为0)
      • 标准输出(描述符为1)
      • 标准错误(描述符为2)
    • 改变当前的文件位置
    • 读写文件
    • 关闭文件
  3. 文件
    • 类型:普通文件、目录、套接字
      • 目录层次:技术分享图片
    • 打开和关闭文件
      • 调用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);
    • 读和写文件
      • 调用readwrite函数执行输入输出
       size_t read(int fd,void *buf,size_t n);
       ssize_t write(int fd,void *buf,size_t n);
RIO包
  1. 无缓冲的输入输出函数

     #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);
  2. 带缓冲的输入函数

     #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);
  3. 读取文件元数据
  • 调用statfstat函数检索文件的信息(元数据)
    #include <unistd.h> #include <sys/stat.h> int stat(const char *filename,struct stat *buf); int fstat(int fd,struct stat *buf);
  1. 读取目录内容
  • 返回目录流的指针
    #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重定向
  1. Linux shell提供了I/O重定向操作符,允许用户将磁盘文件和标准输入输出联系起来
  2. 重定向到磁盘文件foo.txtlinux> ls > foo.txt
  3. 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 《信息安全系统设计基础》第六周学习总结

标签:include   mod   需要   优雅   文件的   lin   位置   closed   无法   

原文地址:https://www.cnblogs.com/besty-zyx/p/9902817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!