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

群晖 wordpress 编辑宁波seo推广服务电话

群晖 wordpress 编辑,宁波seo推广服务电话,云南省建设工程标准定额网站,苏州网站建站公司20145328 《信息安全系统设计基础》第9周学习总结 教材学习内容总结 输入/输出(I/O)是主存和外部设备(I/O设备)(如磁盘驱动器、终端、网络)之间拷贝数据的过程。输入是从I/O设备拷贝到主存。反之则反。 10.…

20145328 《信息安全系统设计基础》第9周学习总结

教材学习内容总结

输入/输出(I/O)是主存和外部设备(I/O设备)(如磁盘驱动器、终端、网络)之间拷贝数据的过程。输入是从I/O设备拷贝到主存。反之则反。

10.1Unix I/O

Unix文件就是一个m字节的序列:b0,b1,b2….bm-1。所有的I/O设备都被虚拟化为文件。所有的输入输出都是在当成相对应的文件的读写。将设备映射为文件,Unix内核引出一个应用接口,Unix I/O。输入输出的执行方式:打开文件:打开文件,内核会返回描述符。标准输入(STDIN_FILENO)描述符为0、标准输出(STDOUT_FILENO)描述符为1、标准错误(STDERR_FILENO)描述符为2。也就是说在Unix生命周期一开始,0、1、2就被占用,以后的open只能从3开始——习题10.1改变当前文件位置:文件位置k,是文件开头起始的字节偏移量。读写文件:读是从文件拷贝到存储器。写相反。当k超过文件字节数m时,会触发end-of-file(EOF)条件。关闭文件:释放文件打开时创建的数据结构(释放文件的存储器资源),将描述符恢复到可用的描述符池中。

10.2打开和关闭文件

1.open函数

  • (1)函数定义:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int open(char *filename, int flags, mode_t mode);
  • (2)参数解析:

  • 返回值:类型为int型,返回的是描述符数字,总是在进程中当前没有打开的最小描述符。如果出错,返回值为-1。
  • filename:文件名
  • flags:指明进程打算如何访问这个文件,可以取的值见下:

    O_RDONLY:只读O_WRONLY:只写O_RDWR:可读可写O_CREAT:文件不存在,就创建新文件O_TRUNC:如果文件存在,就截断它O_APPEND:写操作前设置文件位置到结尾处这些值可以用“或”连接起来。
  • mode:指定了新文件的访问权限位,符号名称如下:

744668-20151108141814758-1745984300.png
      

2.close函数

  • (1)函数定义:
#include <unistd.h>int close(int fd);
  • (2)参数解析:

    • 返回值:成功返回0,出错返回-1

    • 关闭一个已经关闭的描述符会出错

    • fd:即文件的描述符。

10.3读和写文件

  • 1.读 read

(1)函数原型:

#include <unistd.h>ssize_t read(int fd, void *buf, size_t n);//返回有符号值

(2)参数解析:

返回值:成功则返回读的字节数,EOF返回0,出错返回-1。返回值为有符号数。
fd:文件描述符
buf:存储器位置
n:最多从当前文件位置拷贝n个字节到存储器位置buf
  • 2.写 write

(1)函数原型:

#include <unistd.h>ssize_t write(int fd, void *buf, size_t n);

(2)参数解析:

返回值:成功则返回写的字节数,出错返回-1。返回值为有符号数。
fd:文件描述符
buf:存储器位置
n:最多从存储器位置buf拷贝n个字节到当前文件位置
  • 需要注意的是,read和write在正常情况下返回值是实际传送的字节数量。

  • 3.不足值

    不足值指在某些情况下,read和write传送的字节比应用程序要求的要少,原因如下:读的时候遇到EOF从终端读文本行读和写socket

10.4用RIO包健壮地读写

  • RIO包能自动地处理不足值。提供了两个函数:无缓冲的输入输出函数,带缓冲的输入函数。

  • RIO的无缓冲的输入输出函数

这些函数的作用是直接在存储器和文件之间传送数据,常适用于网络和二进制数据之间。

rio_readn函数和rio_writen定义:

#include "csapp.h"ssize_t rio_readn(int fd, void *usrbuf, size_t n);
ssize_t rio_writen(int fd, void *usrbuf, size_t n);

参数:

fd:文件描述符
usrbuf:存储器位置
n:传送的字节数

返回值:

rio_readn成功则返回传送的字节数,EOF为0(一个不足值),出错为-1
rio_writen成功则返回传送的字节数,出错为-1,没有不足值。
  • RIO的带缓冲的输入函数

    • 可以高效的从文件中读取文本行和二进制数据。
    • 文本行就是一个由换行符结尾的ASCII码字符序列。换行符数字值为0x0a.rio_readlineb函数从内部读缓冲区拷贝一个文本行,当缓冲区为空时,会自动地调用read重新填满缓冲区。rio_readn带缓冲区的版本:rio_readnb。
    • rio_readlineb从rp读出一个文本行(包括换行符)并把它存到usrbuf,并用空字符结束这个文本行。最多读maxlen-1个字节,剩下一个给结尾处的空字符。
    • rio_readnb最多读n个字节。

10.5读取文件元数据

  • 检索文件元数据的方式:调用stat和fstat函数。两者功能相似。
    • stat数据结构中的成员。重点掌握st_mode,st_size.
        st_size:文件字节数大小st_mode:文件访问许可位和文件类型。(普通文件:二进制文件和文本文件。目录文件:其他文件信息。套接字:通过网络与其他进程通信的文件。)

10.6共享文件

  • 用三个相关的数据结构表示打开的文件:
    • 描述符表:每个打开的描述符表项指向文件表中的一个表项。
    • 文件表:打开的文件的集合是由一张文件表表示的,所有的进程共享这张表。包括文件位置、引用计数(当前指向该表项的描述符表项数),指向v-node表的指针。
    • v-node表:包含stat结构中大多数信息。
      打开文件的内核数据结构:

744668-20151108142005274-1201303063.png

    文件共享。共享了同一个磁盘文件:

744668-20151108142018992-1853865895.png

子父进程共享文件。子进程有一个父进程描述表符副本,所以他们共享打开文件的集合。注意,在内核删除相应文件表表项之前,子父进程必须都关闭他们的描述符。

744668-20151108142043696-1668562093.png

10.7 I/O重定向

  • I/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从文本行提取不同字段。

练习情况

10.1

885560-20161116081550795-1709997506.png

10.2

885560-20161116081615029-1308564970.png

10.3

885560-20161116081626982-1957435541.png

10.5

885560-20161116081645654-578197119.png

代码托管情况

本周更换虚拟机,代码重构中,代码托管链接→代码托管链接

885560-20161116085142904-1906002150.png

885560-20161116082220420-1635953604.png

885560-20161116085116967-296323561.png

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周0/01/220/40
第二周63/631/320/60
第三周0/631/420/80
第四周0/631/520/100
第五周45/1081/620/120
第六周0/1081/725/145
第七周0/1081/825/170
第八周0/1082/1025/195
第九周79/1872/1225/220

转载于:https://www.cnblogs.com/rebrust/p/6059760.html

http://www.lbrq.cn/news/2348245.html

相关文章:

  • 上饶哪有做网站的公司佛山做网站建设
  • 网站日志分析的意义谷歌账号注册入口官网
  • 电影资源分享网站怎么做的网站权重是怎么提升的
  • 牡丹江市建设局网站中国职业培训在线官网
  • 酷家乐个人网页版网站搜索引擎优化
  • 深圳网站建设易通鼎商品推广
  • 网站建设招标流程图免费刷推广链接的软件
  • 做免费嗳暧视频网站软文发布的平台与板块
  • wordpress文章添加按钮霸榜seo
  • 最火的做牛排沙拉网站seo虚拟外链
  • 最强的网站建设电话seo公司资源
  • 吉安市网站制作关键词推广排名
  • 用python做网站的多吗单页关键词优化费用
  • 武汉企业做网站找哪家好网络营销软件商城
  • 微商网站如何做推广方案8个公开大数据网站
  • 那个公司做的网站详情页好看厦门网站seo
  • 昆明网站建设贴吧线上推广方案模板
  • 打开网站notfound百度推广怎么使用教程
  • 西宁做网站君博认同疫情最新情况
  • 数据百度做网站好用吗属于seo网站优化
  • 关于网站建设的建议百度图片搜索入口
  • 华大集团 做网站广告设计公司
  • 去水印小程序源码seo云优化公司
  • 网站开发公司怎么找客户武汉seo搜索引擎
  • 500网站建设做seo需要投入的成本
  • 凯里建设网站广州百度推广代理公司
  • a做片手机免费网站有哪些什么平台可以免费推广产品
  • 网站建设中正在为您转2023年8月疫情又开始了吗
  • 学室内设计好不好一键优化下载安装
  • 网站建设专业知识应用百度企业网盘
  • Linux探秘坊-------14.信号
  • 高温车间(60℃+)如何选高温/宽温边缘网关设备?
  • JVM监控及诊断工具-命令行篇
  • HTML面试题
  • C语言-流程控制
  • 各种开发语言主要语法对比