• 20145325张梓靖 《信息安全系统设计基础》第9周学习总结


    20145325张梓靖 《信息安全系统设计基础》第9周学习总结

    教材学习内容总结

    • UNIX I/O 在UNIX系统中有一个说法,一切皆文件。所有的I/O设备,如网络、磁盘都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。这种将设备映射为文件的方式,允许UNIX内核引出一个简单、低级的应用接口,称为UNIX I/O,这使得所有的输入和输出都能以一种统一且一致的方式来执行:打开文件、改变当前的文件位置、读写文件、关闭文件。
    • 打开和关闭文件 int open(char *filename,int flags,mode_t mode),其中打开标志flags有三种基本标志:O_RDONLY、O_WRONLY、O_RDWR。也可以和其他三种(O_CREAT、O_TRUNC、O_APPEND)组合使用。mode参数指定了新文件的访问权限位。
    • 读和写文件 在系统I/O中读写文件用的系统函数为read()和write()函数来执行:read函数从描述符为fd的当前文件位置拷贝最多n个字节到存储器位置buf。返回值-1表示一个错误,而返回值0表示EOF。否则,返回值表示的是实际传送的字节数量。而write函数从存储器位置buf拷贝至多n个字节到描述符fd的当前文件位置。返回值要么为-1要么为写入的字节数目。
    • 用RIO包健壮地读写 RIO:1.无缓冲的输入输出函数(直接在存储器和文件之间传送数据,没有应用级缓冲,它们对将二进制数据读写到网络和从网络读写二进制数据尤其有用),对同一个描述符,可以任意交错地调用rio_readn和rio_writen;2.带缓冲的输入函数,对同一个描述符,可以任意交错地调用rio_readnb和rio_readineb。
    • 读取文件元数据 应用程序能够通过调用stat和fstat函数检索到关于文件的信息(有时也称为文件的元数据),若成功,返回0,若出错则为-1.stat以一个文件名为输入,并且填充buf结构体。fstat函数只不过是以文件描述符而不是文件名作为输入。stat结构体中,st_size成员包含了文件的字节大小,st_mode为文件访问许可位。UNIX提供的宏指令根据st_mode成员来确定文件的类型:S_ISREG(),这是一个普通文件;S_ISDIR(),这是一个目录文件;S_ISSOCK()这是一个网络套接字。
    • 共享文件 内核用三个相关的数据结构来表示打开的文件:描述符表,文件表,v-node表。
    • I/O重定向 通过dup2函数,对描述符表表项进行拷贝覆盖,实现重定向。
    • 错误处理 系统级函数调用,3种不同风格的返回错误:Unix风格的、 Posix风格的、 DNS风格的。

    教材学习中的问题和解决过程

    • 问题: 例如 write函数,其中的第2个参量定义为了“const void”,但对 read函数却只是直接的定义为“void”,const有什么作用,为什么要用它
    • 解决过程 通过上网查找,知道const是作为修饰常类型,即其修饰的值不允许修改,但在 write函数里面有什么意义确实不太明白
    • 问题: rio_readnrio_writennread=0有什么作用
    • 解决过程nleft>0可以知道,当errno==EINTR时,nread=0,则一直循环,即暂停之意
    • 问题: 对10.1中“改变当前的文件位置”,“文件位置”指的是文件存放的位置,还是文件里面的位置(类似光标在文件里的某位置)
    • 解决过程 通过继续后面的教材阅读(10.6、10.7),能够基本清楚的判定“文件位置”指的是文件里面的某一位置
    • 问题: 读缓冲区格式代码里(p602),2个char类型的变量怎么理解
    • 解决过程 通过后面的rio_read函数代码(p603),清楚知道对rio_buf[RIO_BUFSIZE]可以理解为缓存空间,同样的rio_bufptr可以理解为缓冲空间里的指引的地址(类似于文件位置)

    本周代码托管

    代码托管

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 3500行 25篇 300小时
    第一周 70/70 2/2 22/22
    第二周 150/220 1/3 23/45
    第三周 160/380 1/4 25/70
    第五周 250/630 1/5 30/100
    第六周 25/655 1/6 27/127
    第七周 30/685 2/8 25/152
    第八周 0/685 1/9 20/172
    第九周 61/685 1/10 22/194

    参考资料

  • 相关阅读:
    qt中文乱码问题
    【Qt开发】QThread 实用技巧、误区----但文档中没有提到
    TCP/UDP网络性能测试工具
    wireshark怎么抓包、wireshark抓包详细图文教程
    INDEX--从数据存放的角度看索引2
    杂谈--从基数评估来看问题1
    INDEX--从数据存放的角度看索引
    疑难杂症--为数据库主文件所在磁盘保留一定量磁盘空间
    统计--VARCHAR与NVARCHAR在统计预估上的区别
    杂谈--SQL SERVER版本
  • 原文地址:https://www.cnblogs.com/zzjzzjzzj/p/6058988.html
Copyright © 2020-2023  润新知