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

邵阳做网站建设企业查询天眼查

邵阳做网站建设,企业查询天眼查,一键生成ppt免费,抖音短视频代运营公司文章目录 前言一、重定向二、系统调用dup2三、重定向的使用四、一切皆文件 前言 Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入0, 标准输出1, 标准错误2, 0,1,2对应的物理设备一般是:键盘&#xff…

文章目录

  • 前言
  • 一、重定向
  • 二、系统调用dup2
  • 三、重定向的使用
  • 四、一切皆文件


前言

Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入0, 标准输出1, 标准错误2, 0,1,2对应的物理设备一般是:键盘,显示器,显示器

在这里插入图片描述

而现在知道,文件描述符就是从0开始的小整数。当我们打开文件时,操作系统在内存中要创建相应的数据结构来描述目标文件。于是就有了file结构体。表示一个已经打开的文件对象。而进程执行open系统调用,所以必须让进程和文件关联起来。每个进程都有一个指针*files, 指向一张表files_struct,该表最重要的部分就是包涵一个指针数组,每个元素都是一个指向打开文件的指针!所以,本质上,文件描述符就是该数组的下标。所以,只要拿着文件描述符,就可以找到对应的文件

一、重定向

文件描述符的分配规则:在files_struct数组当中,找到当前没有被使用的
最小的一个下标,作为新的文件描述符。
我们先来看这段代码
在这里插入图片描述
毫无疑问我们标准输入,标准输出和标准错误占据了file数组0,1,2位置,然后我们执行程序也是打印在显示器上面
在这里插入图片描述

接下来我们再对源代码进行一些更改

在这里插入图片描述
我们执行程序发现没在显示器上面打印信息,而是在文件里面打印了
在这里插入图片描述
而且此时的文件描述符为1,也验证了我们上面说的:
在files_struct数组当中,找到当前没有被使用的
最小的一个下标,作为新的文件描述符。
在这里插入图片描述
原理:我printf默认用标准输出来封装,而我标准输出的文件描述符在数组中对应的是1,我printf只管往1里面写入,不关心你1里面到底是谁,所以当我们关闭原来的文件描述符为1的标准输出,我1位置就放入了myfile的文件指针,所以会向myfile中写入
在这里插入图片描述

二、系统调用dup2

在这里插入图片描述
dup是duplicate的缩写具有重定向的功能,(不需要我们像上面那样复杂的先去关闭一个指定位置,再打开一个新文件的操作),之所以叫这个名字我们需要从原理层来看:

dup2()

我们新打开的文件,操作系统创建fiile的结构体并且其文件描述符分配为3,指针数组中下标1位置直接对我们数组中下标为3位置进行拷贝,1位置最后也指向log.txt的文件结构体
在这里插入图片描述

printf是C库当中的IO函数,一般往 stdout 中输出,但是stdout底层访问文件的时候,找的还是fd:1, 但此时,fd:1下标所表示内容,已经变成了myfile的地址,不再是显示器文件的地址,所以,输出的任何消息都会往文件中写入,进而完成输出重定向。

因为IO相关函数与系统调用接口对应,并且库函数封装系统调用,所以本质上,访问文件都是通过fd访问的。所以C库当中的FILE结构体内部,必定封装了fd。

三、重定向的使用

在这里插入图片描述
执行文件:

在这里插入图片描述
我们会发现hello error没有写入log.txt中而是直接打印在了显示器上这是为什么呢?
前面我们已经有过重定向的知识了,这里应该不难理解,

//本质是将log.txt重定向到1也就是标准输出流的位置,
完整写法应该是这样的:
./test 1 > log.txt
因为文件描述符1被重定向,所以我们朝stdout里写入的数据虽然
依旧会向1所指向的位置
去写入,但因为我们的1位置已经被新文件重定向也就是1中存的是新文件的信息地址,
所以写入的时候会写入新文件的位置,这也就解释了为什么log中会被写入数据而我们stderror标准错误流对应的文件描述符2不受影响,
所以我依旧向显示器打印

我们也可以选择重定向到标准错误对应的文件描述符中
在这里插入图片描述
我们也可以将重定向1输出到log.txt中剩余的内容再重定向到文件描述符为2的位置
在这里插入图片描述

还可以同时把这些内容输入到一个文件当中去
在这里插入图片描述
在这里插入图片描述

四、一切皆文件

即使是外设,Linux中也会把他们看成文件,当成文件来进行管理

在这里插入图片描述
在这里插入图片描述

完整图:
在这里插入图片描述

http://www.hkea.cn/news/789618/

相关文章:

  • 建设工程竣工备案网站百度保障中心人工电话
  • 韶关城乡建设部网站首页营销型网站建设策划书
  • 建设银行手机银行下载官方网站谷歌浏览器网页版入口在哪里
  • 网站建设 好域名注册信息
  • 公众号微网站建设认证哪个推广网站好
  • 爬取1024上传到wordpress蔡甸seo排名公司
  • 流感吃什么药更好seo的方法
  • 营销型网站建设市场seo黑帽技术有哪些
  • 扬中做网站的公司seo虚拟外链
  • 永川集团网站建设免费网站seo诊断
  • 国外 上海网站建设网络营销推广方式案例
  • 24手表网站网络技术推广服务
  • 鞍山网站制作推广游戏推广员判几年
  • 360如何做网站优化网页设计制作软件
  • 金华网站建设电话电商运营主要负责什么
  • 百度的官方网站游戏推广工作好做吗
  • 著名的深圳网站建设网页快照
  • 政务网站建设要求快速排名软件哪个好
  • 自己网站怎么做优化色盲和色弱的区别
  • 苏州建网站公司seo网络推广培训班
  • 福清市建设局网站石家庄学院
  • 找考卷做要去哪个网站中国国家培训网官网查询
  • 软件系统开发的大概步骤优化网站标题名词解释
  • 院校网站建设模板建站平台
  • 淘宝网站内搜索引擎优化怎么做广告推广平台网站有哪些
  • 大片播放网站国外免费推广网站有哪些
  • flash网站cms排名sem优化软件
  • 申请完域名怎么做网站百度链接提交
  • 驻马店市可以做网站的公司百度搜索竞价排名
  • 郑州市做网站吉林百度查关键词排名