【linux】基础IO(三)

上一节基础IO我们着重理解了重定向与缓冲区,这节我们需要重点理解文件再磁盘中是怎样存储。以及上一节我们没有涉及到的知识。
stderr到时有什么用?

目录

  • fd-> 0 1 2:
    • 初步理解2
    • 怎样将错误与正确输出都打印在一个文件?
  • 文件在硬盘的存取:
    • 磁盘的样子:

fd-> 0 1 2:

为什么我们的C语言要有fd为0 1 2的文件标识符呢。
我们知道0 是键盘,1 与 2是屏幕。
为什么1与2都是屏幕还要有两个ne?

我们一一来说。

首先对于0 与 1:
我们写的程序无非就是对数据进行处理(计算,存储…)
而这个过程也势必要被我们用户进行动态观察,方便我们与计算机的交互,这是自Unix操作系统出现时就约定成俗的,一直延续到现在,是历史原因造成的。

那么0与1容易理解,2如何理解呢?

初步理解2

我们先来看一段代码:
在这里插入图片描述
代码现象:
在这里插入图片描述
我们发现直接运行时会正常打印,但是重定向并没有全部重定向到log.txt中,向stderr中打印的仍旧在显示器上显示了。

所以,重定向的全名叫做标准输出重定向,完整写法是./myexe 1>log.txt,也就是只针对stdout这个流。

在这里插入图片描述
那么2存在的原因是什么?

当我们想查看一个程序的错误信息时,只需要重定向一下即可,可以加快我们的debug!

怎样将错误与正确输出都打印在一个文件?

将IO改一下,方便观看,多重复复制了一些打印语句。
在这里插入图片描述

我们先来看这样一个操作:
在这里插入图片描述
这样的操作容易理解。
那么这个操作呢?
在这里插入图片描述
我们分别理解一下:
对于第一种:
在这里插入图片描述
那么第二种是怎么理解?
2>&1:是对1取地址将1的内容给2。
在这里插入图片描述
现在我们回想一下在实现诗句结构时,我们经常使用的perror函数,他的本质就是想stderr中打印。在这里插入图片描述
我们的C++中除了cin cout,也有cerror函数,本质也是想stderr中打印。
在这里插入图片描述

在这里插入图片描述

所以,C++中的cerror和cout就像C的printf与perror!

文件在硬盘的存取:

在开始之前我们先普及一个概念,计算机只认识二进制,那么二进制有什么表现形式?有高低电平,像磁铁的南北极也可以代表0与1…
所以二进制在物理层面有不同的表现形式。

磁盘的样子:

持续更新…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何从应用商店Microsoft Store免费下载安装HEVC视频扩展插件

在电脑上打开一张HEIC类型的图片提示缺少HEVC解码器,无法打开查看,现象如下: 这种情况一般会提示我们需要下载安装HEVC解码器,点击“立即下载并安装”会跳转到应用商店,但是我们发现需要付费7元才能下载安装 免费安装…

独家福利:Figma汉化大礼包,让UI设计零障碍!快来领取吧!

Figma是国外开发的软件。全英文页面限制了国内很多UI设计师的发挥,只能用Figma中文插件中文使用。Figma中文插件虽然不如中文版好用,但基本可以理解意思。那么Figma中文插件在哪里可以下载呢?下面介绍两种Figma中文插件的下载和安装方法&…

Redis数据库②高可用+持久化+性能管理

目录 一.高可用 二.持久化 1.Redis 提供两种方式进行持久化 2.RDB 持久化 (1)手动触发 (2)自动触发 (3)执行流程 (4)启动时加载 3.AOF持久化 (1)开…

如何进行软件质量评估?

一、为何评估 软件质量评估的重要性体现在以下几个关键方面: 确保用户需求满足: 软件质量评估首先是为了确保软件产品能够准确、完整地满足用户的需求。通过评估,可以发现软件在功能、性能、安全性等方面的不足之处,及时进行修正…

uniapp中自定义tabbar无法跳转?如何解决

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

0基础如何进入IT行业?一文揭秘成功蜕变之路!|TodayAI

一、引言 在数字化转型的浪潮下,IT行业的魅力日益增强,吸引了大量跨领域人才的关注。然而,对于那些零基础的人来说,进入这个充满机遇和挑战的领域似乎是一条充满未知和困难的道路。本文旨在探讨零基础者如何通过有效的学习路径、…

1688详情API接口:解锁多元化应用场景java php c++

随着互联网的快速发展,数据交换和信息共享已成为企业日常运营不可或缺的一部分。在这样的背景下,API(应用程序接口)接口作为实现数据互通的重要工具,受到了越来越多企业的青睐。1688详情API接口作为阿里巴巴旗下的重要…

Games101Homework【6】Acceleration structure(Including framework analysis)

Code Analysis&#xff1a; friend&#xff1a; C中友元&#xff08;友元函数和友元类&#xff09;的用法和功能_friend class a<b>-CSDN博客 [C&#xff1a;不如Coding]&#xff08;11&#xff09;&#xff1a;友元函数与友元类_哔哩哔哩_bilibili Here is a simple…

C++模仿qq界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口的大小this->resize(645,497);//设置窗口名字this->setWindowTitle("QQ");//设置窗口图标this->setWindowIcon(QIcon("C:\\zhouzhouMyfile\\qt_proj…

C语言结构体大小

1、结构体成员类型 结构体成员的类型&#xff0c;不同的结构体成员占用的内存大小不同 2、结构体对齐 为了提高内存访问的效率&#xff0c;编译器会对结构体进行对齐。对齐的方式是按照成员的类型和顺序来进行的。对齐的目的是为了让结构体成员的地址能够被整除&#xff0c;从…

✌2024/4/3—力扣—字符串转换整数

代码实现&#xff1a; int myAtoi(char *str) {long ret 0;int flag 1; // 默认正数// 去除空格及判断符号位while (*str ) {str;}if (*str -) {flag -1;str;} else if (*str ) {str;}// 排除非数字的情况if (*str < 0 || *str > 9) {return 0;}while (*str > …

[C++][算法基础]堆排序(堆)

输入一个长度为 n 的整数数列&#xff0c;从小到大输出前 m 小的数。 输入格式 第一行包含整数 n 和 m。 第二行包含 n 个整数&#xff0c;表示整数数列。 输出格式 共一行&#xff0c;包含 m 个整数&#xff0c;表示整数数列中前 m 小的数。 数据范围 1≤m≤n≤&#x…

真实的招生办对话邮件及美国高校官网更新的反 AI 政策

这两年 ChatGPT 的热度水涨船高&#xff0c;其编写功能强大&#xff0c;且具备强大的信息整合效果&#xff0c;所以呈现的内容在一定程度上具备可读性。 那么&#xff0c;美国留学文书可以用 ChatGPT 写吗&#xff1f;使用是否有风险&#xff1f;外网博主 Kushi Uppu 在这个申…

C++ vector顺序表模拟实现

目录 前言&#xff1a; 模拟实现&#xff1a; 构造函数&#xff1a; 析构函数&#xff1a; 容量调整&#xff08;reserve&#xff09;&#xff1a; resize函数&#xff1a; 尾插&#xff08;push_back&#xff09;: 尾删&#xff08;pop_back&#xff09;: 插入&#xff…

基于Spring boot+Vue的业余排球俱乐部会员管理系统

5 系统功能模块的具体实现 5.1超级会员角色 5.1.1 登录 超级管理员登录通过用户名和密码去数据库查询用户表&#xff0c;该名称是否在用户表中存在&#xff0c;如果存在&#xff0c;则通过用户名和密码查询密码是否正确&#xff0c;然后吧用户的信息存在jwt的负载里&#xf…

表1和表2怎么查找相同的内容?3种实用技巧赶紧学起来

-- 为啥会感觉给不了一个人幸福&#xff0c;而选择分开不打扰&#xff1f; 核对不同工作表中的数据&#xff0c;是大家在处理工作表时会遇到的高频场景&#xff0c;这篇文章跟大家分享一下如何查找不同工作表中的相同内容。 比对数据的方法有很多&#xff0c;这里跟大家分享3种…

LangChain - OpenGPTs

文章目录 MessageGraph 消息图认知架构AssistantsRAGChatBot 持久化配置新模型新工具astream_events总结 关键链接&#xff1a; OpenGPT GitHub 存储库YouTube 上的 OpenGPT 演练LangGraph&#xff1a;Python、JS 两个多月前&#xff0c;在 OpenAI 开发日之后&#xff0c;我们…

二维码门楼牌管理应用平台建设:打造便民服务热线新生态

文章目录 前言一、二维码门楼牌管理应用平台概述二、便民热线服务的构建三、便民热线服务的优势四、便民热线服务的潜在价值五、总结与展望 前言 随着信息技术的飞速发展&#xff0c;二维码门楼牌管理应用平台的建设已成为城市智慧化建设的重要组成部分。这一平台不仅为居民提…

区块链技术与数字身份:解析Web3的身份验证系统

在数字化时代&#xff0c;随着个人数据的日益增多和网络安全的日益关注&#xff0c;传统的身份验证系统面临着越来越多的挑战和限制。在这种背景下&#xff0c;区块链技术的出现为解决这一问题提供了全新的思路和解决方案。Web3作为一个去中心化的互联网模式&#xff0c;其身份…

MySQL学习笔记------多表查询

目录 多表关系 一对多 多对多 一对一 多表查询 概述 分类 内连接&#xff08;交集&#xff09; 隐式内连接 显式内连接 ​编辑 外连接&#xff08;from后为左表&#xff0c;join后为右表&#xff09; 左外连接 右外连接 自连接 联合查询&#xff08;union&#…