Linux基础I/O(中)——重定向

重定向

根据上一篇的文章我们知道,文件描述符是什么。
0->stdin;
1->stdout;
2->stderr;
如果我们新打开一个文件的话,该文件描述符为3,如下图:
在这里插入图片描述::“
在这里插入图片描述

如果我先close(1),再打开一个文件,根据之前的知识我们会知道它的描述符就是1,这时会发生什么呢?
在这里插入图片描述
在这里插入图片描述

确实像上面说到的close(1)后,新打开的文件文件描述符为1,并且printf也不会输出到显示器中,而是输出到文件中使用fprintfstdout也不会输出到屏幕而是输出到文件log.txt中
说明stdout只认识1,不管1对于的是不是标准输出
重定向的本质就是在操作系统内部修改特性文件fd的下标内容

在这里插入图片描述

凡是往1号描述符中写的内容,都写到了log.txt当中,而写不到标准输出!

使用 dup2 系统调用

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
我们发现这样即使我们不close(1),那么我们也可以将内容写到log.txt当中,而不是输出到显示器当中;

int dup2(int oldfd, int newfd)

将oldfd的内容拷贝到,newfd上
如果向打印到三号文件描述符(log.txt)当中,而不是一号文件描述符(标准输出)当中;那么就dup2(3, 1);

一号文件描述符本来指向显示器的,现在将它将指向log.txt,所以要将三号文件描述符的内容拷贝到一号描述符,最后一号描述符和三号一样,那么就有两个都指向oldfd的内容,那么如何关闭又是一个问题

对此使用一个引用计数即可,如果有一个指向该文件的文件描述符关闭了,那么就减减,直到减到0就关闭。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460938.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HGAME 2024 WEEK 1

PWN EzSignIn nc 登录上去即可获得flag hgame{I_HATE_PWN} Web ezHTTP 第一关用Referer,参考:HTTP请求头中Referer的作用_请求转发 请求头里面会有有referer嘛-CSDN博客 HTTP请求中,Referer是header的一部分,当浏览器向web服务…

Java_栈_队列

文章目录 一、栈(Stack)1.概念2.栈的使用3.栈的模拟实现1、定义接口2、定义栈3、成员4、构造方法5、判断空间是否满 full6、入栈 push7、出栈 pop8、获取栈顶元素 peek9、获取栈中有效元素个数 size10、检测栈是否为空 empty完整代码 4.练习1、有效括号2…

Springboot整合JUnit5框架

目录 第一章、在pom文件中导入依赖第二章、新建测试类第三章、新建测试方法 友情提醒: 先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。 第一章、在pom文件中导入依赖 SpringBoot2.2x之后的版本中spring-boot-starter-te…

【leetcode热题100】柱状图中最大的矩形

难度: 困难通过率: 29.6%题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该…

《学成在线》微服务实战项目实操笔记系列(P1~P83)【上】

史上最详细《学成在线》项目实操笔记系列【上】,跟视频的每一P对应,全系列12万字,涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳,参考这篇,相信会带给你极大启发。 一、前期准备 1.1 项目介绍 P2 To C面向…

[word] word表格表头怎么取消重复出现? #媒体#笔记#职场发展

word表格表头怎么取消重复出现? word表格表头怎么取消重复出现?在Word中的表格如果过长的话,会跨行显示在另一页,如果想要在其它页面上也显示表头,更直观的查看数据。难道要一个个复制表头吗?当然不是&…

代码随想录算法训练营day14||二叉树part01、理论基础、递归遍历、迭代遍历、统一迭代

递归遍历 (必须掌握) 本篇将介绍前后中序的递归写法,一些同学可能会感觉很简单,其实不然,我们要通过简单题目把方法论确定下来,有了方法论,后面才能应付复杂的递归。 这里帮助大家确定下来递归…

2024年最新IntelliJ IDEA:新特性与免费激活技巧

大家好,我是小黑,在如今这个信息化的时代,软件工程师们势必需要一款极致高效且功能全面的开发工具来提升他们的编码体验。在众多的IDE(集成开发环境)中,IntelliJ IDEA无疑以其强大的功能和易用性&#xff0…

解密输入输出迷局:蓝桥杯与ACM中C++/C语言常见问题揭秘

关于C中的常见输入输出汇总 带空格的字符串: ​ 对于这种输入方式我们选择使用gets() 函数来进行输入,gets用于从标准输入(通常是键盘)读取一行文本并将其存储为字符串,直到遇到换行符(‘\n’&#xff09…

Ondo宣布将其原生稳定币USDY带入Sui生态

重要提示:USDY是由短期美国国债支持的token化票据,持有者享受稳定币的实用性同时获得收益。USDY不得在美国或向美国人出售或以其他方式提供。USDY也未根据1933年美国证券法注册。 不到一年的时间,Sui已经成为全链TVL排名前十的区块链&#xf…

使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序

对于在线客服与营销系统,客服端指的是后台提供服务的客服或营销人员,他们使用客服程序在后台观察网站的被访情况,开展营销活动或提供客户服务。在本篇文章中,我将详细介绍如何通过 WPF Chrome 内核的方式实现复合客服端应用程序。…

360 安全浏览器 - 页面布局 - 常用网址

360 安全浏览器 - 页面布局 - 常用网址 自定义样式 let myStyle {https://www.baidu.com/: {color: #001483,backgroundColor: #FFF,icon: https://www.baidu.com/favicon.ico},https://blog.csdn.net/jx520: {backgroundColor: #fc5531,icon: https://g.csdnimg.cn/static/l…