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


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

    教材学习内容总结

    Unix I/O

    • 打开文件:一个应程序通过要求内核打开相应的文件。
    • Linux shell:创建的每个进程,开始都有三个打开的文件:标准输入(描述符为0),标准输出(描述符为1),标准错误(描述符为2)
    • 关闭文件:通知内核关闭文件,作为响应,内核释放文件打开时创建的数据结构。

    文件

    • 文本文件是只含ASCII或Unicode字符的普通文件。二进制文件是所有其他文件。
    • 目录:是包含一组链接的文件,其中每个链接都将文件名映射到一个文件。
    • 绝对路径:以一个斜杠开始,表示从根节点开始的路径。
    • 相对路径: 以文件名开始,表示从当前工作目录开始的路径。
    • Linux目录层次:

    打开文件和关闭文件

    • mode参数指定了新文件的访问权限,每一个进程都有一个umask,通过调用umask来设置的,当前进程通过某个mode参数的open函数来创建新的文件时,文件的访问权限设置为mode&~umask。

    读和写文件

    • 在X86-64系统中size_t被定义为:unsigned long。ssize_t被定义为long。
    • read_lineb:它从一个内部读缓冲区复制一个文本行,当缓冲区变空时,会自动的调用read函数重新填满患缓冲区。从文件rp读出下一个文本行,将它复制到内存位置usrbuf,并且调用NULL来结束这个文件。
    • read 和 wirte传送字节不足的问题有:1.读时遇到EOF。2.从终端读文本行。3.读和写网络套接字。

    共享文件

    • 典型的打开文件的内核数据结构:

    • 文件共享

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

    • 问题1:我看了教材630页这一段文字 (一旦缓冲区非空,rio_read就从读缓冲区复制n和rp->rio_cnt中最小值个字节到用户缓冲区),有这个问题 (为什么是要n和rp->rio_cnt中最小值个字节)。
    • 问题1解决方案:上网查询,以及结合教材明白了。rp->rio_cnt是从文件中还未读取的字节个数,而n是总共要读取的个数。如果随意的按rp->rio_cnt个字节或n个字节可能会导致超出或者是不足值的问题。

    代码托管

    其他(感悟、思考等,可选)

    对于Unix I/O和RIO函数来说,标准I/O函数更为高级。不要用scanf函数和rio_readlineb函数来读取二进制文件,会使程序出现错误。而对于网络套接字,要使用RIO函数,用标准I/O,会出现一些错误。

  • 相关阅读:
    UITableView cell中label自动换行和自定义label自动换行
    IOS Label 自动换行 IOS6和IOS7
    AFNetWorking Request failed: unacceptable content-type: text/html
    IOS程序内发短信 MFMessageComposeViewController
    python--(常用模块-2序列化)
    python--(常用模块-1)
    小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理)
    小学生绞尽脑汁也学不会的python(反射)
    小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系)
    小学生绞尽脑汁也学不会的python(面对对象-----成员)
  • 原文地址:https://www.cnblogs.com/qy20165235/p/9905019.html
Copyright © 2020-2023  润新知