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


    • I/O:在主存和外部设备(例如磁盘存储器、终端和网络)之间复制数据的过程。
    • 输入操作是从 I/O设备复制数据到主存,而输出操作是从主存复制数据到 I/O设备。
    • 所有I/O设备都被模型化为文件。
    • Linux shell创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0)、标准输出(描述符为1)和标准错误(描述符为2)
    • 每个Linux文件都有一个类型来表明它在系统中的角色:
      1、普通文件包含任意数据;2、目录是包含一组链接的文件;3、套接字是用来与另一个进程进行跨网络通信的文件;
    • 对内核而言,文本文件和二进制文件没有任何区别。区别是相对应用程序而言的。
    • 在某些情况下,read和write传送的字节比应用程序要求的要少。这些不足值不表示有错误。出现这样情况的原因有:
      1、读时遇到EOF;2、从终端读文本行;3、读和写网络套接字;
    • st_size成员包含了文件的字节数大小。st_mode成员则编码了文件访问许可位。
    • 内核用三个相关的数据结构来表示打开的文件:
      1、描述符表;2、文件表;3、v-node表
      典型的打开文件的内核数据结构:

      文件共享:
    • 读和写文件
      在系统I/O中读写文件用的系统函数为read()和write()函数来执行
    #include <unistd.h>
    ssize_t read(int fd,void * buf,size_t n);
    ssize_t write(int fd,void *buf,size_t n);
    

    read函数从描述符为fd的当前文件位置拷贝最多n个字节到存储器位置buf。返回值-1表示一个错误,而返回值0表示EOF。否则,返回值表示的是实际传送的字节数量。而write函数从存储器位置buf拷贝至多n个字节到描述符fd的当前文件位置。返回值要么为-1要么为写入的字节数目。

  • 相关阅读:
    家庭记账本教程之增(java web基础版三)
    家庭记账本小程序之后台java代码部分(java web基础版二)
    家庭记账本小程序之前端页面设计(java web基础版一)
    面向对象
    装饰器详解
    Python开发【第六篇】:文件处理
    Python开发【第四篇】:运算符
    Python开发【第三篇】:分支循环
    Python开发【第五篇】:函数
    Atom 基本使用
  • 原文地址:https://www.cnblogs.com/zhangshuai9345/p/9906229.html
Copyright © 2020-2023  润新知