当前位置: 首页 > news >正文

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

教材知识点总结

Unix I/O

  • 介绍:所有I/O设备都被模型化为文件,这种将设备映射为文件的方式,允许Linux内核引出一个简单、低级的应用接口,称为Unix I/O。

    • 打开文件:一个应用程序通过要求内核打开相应的文件,宣告它想要访问一个I/O设备。

    • 每个进程开始时有3个打开的文件:标准输入、标准输出、标准错误。

    • 改变当前文件位置:每个打开的文件,有一个文件位置k,文件位置是文件开头起始的字节偏移量。seek可以显式设置文件的当前位置。

    • 读写文件:

      读:从文件复制n个字节到内存中

      写:从内存复制n个字节到文件中

    • 关闭文件:内核释放文件打开时创建的数据结构,关闭打开的文件并释放内存。

文件

  • 文件类型

    • 普通文件:

      • 文本文件:只含有ASCII或Unicode字符的普通文件。

      • 二进制文件:所有不是文本文件的文件。

    • 目录:包含一组链接的文件,每个链接都将一个文件名映射到一个文件。

    • 套接字:用来与另一个进程进行跨网络通信的文件。

    • 可以用cd命令修改shell中的当前工作目录。

    • 路径名的两种形式:

      • 绝对路径:以一个斜杠开始,表示从根节点开始的路径。

      • 相对路径:以文件名开始,表示从当前工作目录开始的路径。

    • 打开与关闭文件:

      • 进程通过Open函数打开一个已存在的文件或者创建新文件。

          int open(char *filename,int flags,mode_t mode);
      • 原理:open函数将文件名转换成一个文件描述符,并且返回该描述符数字。

      • flag参数:

        O_RDONLY:只读

        O_WRONLY:只写

        O_RDWR:可读可写

        O_CREAT:如果文件不存在,创建一个新文件。

        O_TRUNC:如果文件已存在,截断。

        O_APPEND:在每次写操作前,设置文件位置到文件的结尾处。

        例子:fd = Open("foo.txt",O_RDONLY,0)

        以读的方式打开一个已存在的文件。

      • mode参数:指定了新文件的访问权限位。

        S_IRXX:XX能够读这个文件

        S_IWXX:XX能够写这个文件

        S_IXXX:XX能够执行这个文件

      • 进程通过调用close函数关闭一个打开的文件,传入的参数为文件描述符。

          int close(int fd);
      • 如果关闭一个已关闭的描述符会出错

    • 读和写文件

      • 应用程序通过read与write函数来执行输入和输出。

        • read介绍:read函数从描述符为fd的当前文件位置复制最多n个字节到内存位置buf,返回值为-1表示一个错误,返回值为0表示EOF。

            ssize_t read(int fd, void *buf , size_t n);
        • write介绍:从内存位置buf复制至多n个字节到描述符fd的当前文件位置。

            ssize_t write(int fd, const void *buf , size_t n);
    • RIO包的两种不同函数

      • 无缓冲的输入输出函数:直接在内存与文件之间传送数据

      • 带缓冲的输入函数:允许高效地从文件中读取文本行与二进制数据。

    • 应用可以通过stat函数检索相关文件信息。

      • stat函数以一个文件名为输入,并填写一个stat数据结构中的各个成员。

        int stat(const char filename,struct stat buf);

标准I/O

  • 相关函数

    • 打开与关闭文件:fopen(),fclose()

    • 读和写:fread(),fwrite()

    • 读、写字符串:fgets(),fputs()

课上相关命令总结

  • od :读取文件内容,以二进制显示。

  • man -k k1| grep k2 | grep k3:过滤关键字k查找

  • grep -nr XXX /usr/include:寻找XXX在哪一个文件中

转载于:https://www.cnblogs.com/Gst-Paul/p/9906031.html

相关文章:

  • ajax实现异步上传多图并且预览
  • Redis学习之管道机制
  • fiddler安装及抓包分析
  • TP5 对于数组使用分页的方法
  • 通过K8S Ingress Controller来实现应用的流量复制
  • 主流接口测试框架对比
  • 虚拟化网络技术
  • 跨域技术
  • 微信公众号开发-业务开发03
  • 浅析装饰器
  • this的用法详解
  • Oracle 18c新特性详解-多租户专题
  • 利用CSS改变图片颜色的100种方法!
  • django框架的基础知识点《贰》
  • ioc控制反转笔记
  • 【翻译】babel对TC39装饰器草案的实现
  • angular2 简述
  • Date型的使用
  • ng6--错误信息小结(持续更新)
  • PaddlePaddle-GitHub的正确打开姿势
  • python大佬养成计划----difflib模块
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue实战(四)登录/注册页的实现
  • 程序员最讨厌的9句话,你可有补充?
  • 简析gRPC client 连接管理
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 排序算法学习笔记
  • 山寨一个 Promise
  • 优化 Vue 项目编译文件大小
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​TypeScript都不会用,也敢说会前端?
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​马来语翻译中文去哪比较好?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (AngularJS)Angular 控制器之间通信初探
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (万字长文)Spring的核心知识尽揽其中
  • (原)本想说脏话,奈何已放下
  • (转)Sql Server 保留几位小数的两种做法
  • (转)Windows2003安全设置/维护
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET gRPC 和RESTful简单对比
  • .Net Remoting常用部署结构
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试