zoukankan      html  css  js  c++  java
  • 20145202 《信息安全系统设计基础》第10周学习总结(1)

    20145202 《信息安全系统设计基础》第10周学习总结(1)

    这一周前四天只是把代码下下来了并没有研究太多而是把之前的书本上的和附录的东西再看了看课后题做了以下巩固一下,周日发的博客准备详细讲代码。

    教学内容总结

    10.1UnixI/O

    • 打开文件:一个应用程序通过要求内核打开相应文件,来宣告它想访问一个I/O设备。
    • 改变文件当前位置:对于每个打开的文件,内核保存着一个文件位置k,为0.文件位置是从文件开头起始的字节偏移量。应用程序能够通过执行seek操作显示设置文件的当前位置k。
    • 读写文件:一个读操作就是文件拷贝字节到存储器,从当前文件位置k开始将k增加到k+n,给定一个大小为m的文件。
    • 关闭文件:应用完成了对文件的访问之后,他就通知内核关闭这个文件。作为响应,内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中。

    10.2打开和关闭文件

    • O_RDONLY:只读
    • O_WRONLY:只写
    • O_RDWR:可读可写
    • O_CREAT:如果文件不存在,就创建一个新的空文件
    • O_TRUNC:如果文件已经存在,就截断它。
    • O_APPEND:在每次操作前,设置文件位置到文件结尾处。

    10.3读和写文件

    • 读时遇到EOF:准备读一个文件时,该文件从当前位置开始只有20字节如果用50字节的片进行读取,下一个read返回值不足20,此后的read将通过返回不足值0来发出EOF信号。
    • 从终端读文本行:打开文件是与终端相关联的,那么每个read函数将一次传送一个文本行,返回的不足值等于文本行的大小。
    • 读和写网络套接字:如果打开的文件对应网络套接字,那么内部缓存冲约束和较长的网络延迟会引起read和write返回不足值。

    10.4用RIO包健壮读写

    • 无缓冲的输入输出函数:这些函数值直接在存储器和文件之间传送数据,没有应用级缓冲,他们将对二进制数数据读写到网络和从网络读写二进制数有用。
    • 带缓冲的输入函数:允许高效的从文件中读取文本行和二进制数,这些文件的内容缓存在应用级缓冲区内。

    10.5读取文件元数据

    10.6共享文件

    • 描述符表:每个进程都独立的描述符表。
    • 文件表:打开文件的集合时由一张文件表来表示的,所有的进程共享这张表。每个文件表的表项组成包括有当前位置,引用计数。
    • v-node表:同文件表一样,所有的进程共享这张表。

    10.7I/O重定向

    ls > foo.txt
    这句代码的含义就是使外壳加载和执行ls程序,并且将标准输出重定向到磁盘文件foo.txt。
    I/O重定向函数: dup2
    函数定义为:
    include <unistd.h>

    int dup2(int oldfd, int newfd);
    返回值:成功返回描述符,错误返回-1

    这个函数执行的操作是,拷贝描述符表表项oldfd,覆盖描述表表项newfd,如果后者被打开,则在拷贝前关闭它。

    10.8标准I/O

    标准I/O库:一组高级输入输出函数。将一个打开的文件模型化为一个流,一个流即一个指向FILE类型的结构的指针。

    每个ANSI C程序开始时都有三个打开的流:stdin(标准输入),stdout(标准输出),stderr(标准错误)。

    类型为FILE的流是对文件描述符和流缓冲区的抽象。为了减小系统开销。

    10.9综合:该使用哪些I/O函数

    在网络套接字的时候使用RIO函数。需要格式化输出,使用sprintf函数格式化一个字符串,然后用rio_writen把它发送到套接口。

    格式化输入,使用rio_readlineb读一个完整的文本行,再使用scanf从文本行提取不同字段。

    实验楼中的学习

    XXX

    教材上的练习

    10.2
    描述符fd1和fd2都要各自的打开文件表表项,所以每个描述符对于foobar.txt都有它自己的位置。因此,从fd2的读操作会读取foobar.txt的第一个自己,并输出
    c=f ,而不是 c=o

    代码托管

    http://git.oschina.net/tuolemi/haha

    学习进度条

  • 相关阅读:
    KMP
    837B. Balanced Substring
    JDK7和JDK8新特性
    数据库索引的实现原理
    mysql索引总结----mysql 索引类型以及创建
    Java 8新特性终极指南
    类加载机制
    类加载过程
    深入理解java虚拟机 精华总结(面试)(转)
    几种常用的设计模式介绍(转)
  • 原文地址:https://www.cnblogs.com/tuolemi/p/6073352.html
Copyright © 2011-2022 走看看