重定向

news2024/9/25 3:24:12

 重定向原理

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
close(1);
int fd = open("myfile", O_WRONLY|O_CREAT, 00644);
if(fd < 0){
perror("open");
return 1;
}
printf("fd: %d\n", fd);
fflush(stdout);
close(fd);
exit(0);
}

我们发现,本来应该输出到显示器上的内容,输出到了文件 myfile 当中,其中,fd=1。这种现象叫做输出重定向 

为啥会这样呢?

当你把1号关闭,那么新打开的文件的描述符是1了,而不是3了

dup2系统调用 

可以利用dup2来完成重定向

  1 #include <stdio.h>
  2 #include <sys/types.h>
  3 #include <sys/stat.h>
  4 #include <unistd.h>
  5 #include <fcntl.h>
  6 int main()
  7 {
  8    int fd = open("myfile", O_CREAT | O_WRONLY|O_TRUNC,0666);
  9    if (fd < 0)
 10    {
 11       perror("open");
 12       return 1;
 13     }                                                                                                                                                    
 14     dup2(fd, 1);
 15     close(fd);
 16     printf("hello myfile\n");
 17     return 0;
 18 }

运行一下,发现没在屏幕上,在文件中

 stdout和stderr的区别

它们都是显示器文件,一个是1号,一个是2号,有什么区别呢?

stdout是标准输出,stderr是标准错误

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 
  4 int main()
  5 {
  6     printf("hello stdout\n");
  7     fprintf(stderr,"hello stderr\n");
  8     return 0;
  9 }        

 正常运行

输出重定向

 

假如我们要把常规信息放在一个文件,错误信息放一个文件,怎么做?

 

假如把所有信息都放在一个文件里呢?

 

总的来说,stdout是打印常规信息,stderr是打印错误信息,都是向显示器打印,只是信息不同,和文件描述符不同。当我们要错误信息是就用stderr咯

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

V-ASSISTANT软件无法设置V90伺服软限位

使用V-ASSISTANT软件配置V90伺服参数时&#xff0c;软限位功能是灰色且未勾选&#xff0c;无法设置软限位&#xff0c;如下图所示&#xff1a; 原因&#xff1a;设置零点位置之后需要在PLC中激活软限位&#xff08;如FB284中ConfigEPOS管脚的Bit2&#xff09; FB284中的Confi…

python学习之路 - pyecharts快速入门

目录 一、pyecharts入门1、pyecharts模块介绍a、概况 2、pyecharts基础入门&#xff08;以折线图为例&#xff09;a、安装依赖b、创建折线图c、常用配置项 3、pyecharts创建柱状图a、创建基本柱状图b、创建反转柱状图c、创建含有时间线的柱状图 4、pyecharts地图可视化a、生成中…

WSL-ubuntu下载安装配置cudnn

下载 安装cuDnn的话需要和CUDA版本对应&#xff0c;可参考官网&#xff1a; cuDNN Archive | NVIDIA Developer 我的cuda是11.8 这个cuDNN8.9.7_Linux直接下载&#xff1a; https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/11.x/cudn…

无人机技术的最新进展及未来趋势

一、飞行控制技术的提升 复杂环境下的稳定性&#xff1a;现代无人机在飞行控制系统方面的升级&#xff0c;使其能在复杂环境中稳定飞行&#xff0c;例如强风条件下或狭窄空间内。 智能避障系统&#xff1a;新型无人机配备有高精度的传感器和先进的算法&#xff0c;能够实现自…

vue3快速入门(一)新建项目与安装插件

步骤很详细&#xff0c;直接上教程 在对应路径下&#xff0c;cmd输入npm create vuelatest,然后按图所示进行选择&#xff08;仅供新手参考&#xff09; 安装以下插件 3.重启vscode&#xff08;为了确保插件生效&#xff09; 4.在vscode启动内置终端 输入npm i或pnpm i安装依赖…

浅谈 mysql 单、双引号的3种用法

mysql 单引号和双引号的使用&#xff0c;主要有以下3种情形 1、在引用字符型或日期类型的值时使用。 2、使用 as 创建别名时使用&#xff0c;别名如含特殊字符&#xff0c;则必须使用单引号或双引号。 3、解决数据原文中存在的单双引号问题。 注&#xff1a;本文所指的单、…

【Docker】Docker学习01 | 什么是docker?

本文首发于 ❄️慕雪的寒舍 因为本人没有学习过docker&#xff0c;虽然部署过很多镜像&#xff0c;但是对于docker底层的实现一概不知。趁学习一个新项目的契机&#xff0c;将docker的相关概念了解清楚。 安装docker的教程请查看 Linux主机安装docker。 如果你想和我一起学习do…

内存管理篇-02内存硬件电路和接口

1. 内存硬件实现机制 通过D触发器构建寄存器和内存的结构对比,这里主要先表达sram复杂&#xff0c;dram简单。 2. sram和ddr sdram结构图对比 主要是想对比sram和dram在和CPU连接过程的差异。sram需要的地址线较多&#xff0c;dram需要的较少&#xff0c;但是需要多次发送&…

如何用Python进行民宿数据分析?可视化工具应用教程

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

微信小游戏授权问题

微信小程序获取用户相关信息的接口&#xff0c;如wx.getUserCloudStorage&#xff0c;报错&#xff1a;please go to mp to announce your privacy usage。 需要在微信公众平台设置用户隐私保护。

CentoOS 7下配置并部署 DataX 3.0与DataX-web

数据同步框架 DataX DataX本身作为离线数据同步框架,采用 Framework plugin架构构建。将数据源读取和写入抽象成为Reader/ Writer插件,纳入到整个同步框架中。 Reader: Reader为数据采集模块,负责采集数据源的数据,将数据发送给 Framework。 Writer: Writer为数据写入模块,负责…

一种间距可调式在线测宽仪!

关键词&#xff1a;在线测宽仪,测宽仪,板材测宽仪,板材 我们都知道&#xff0c;在板材生产线中&#xff0c;为了应对多方市场需求&#xff0c;生产的板材规格众多&#xff0c;甚至宽度范围相差甚大。而现在应用于产线的在线测宽仪多为光学测量方式&#xff0c;这也就意味着&…

Nginx: 配置项之access模块、auth_basic模块、auth_request模块

access模块 用于限定特定IP或者是网段进行访问的&#xff0c;从而实现Nginx的一个访问权限控制这个模块&#xff0c;它仅能够针对IP或者网段的一个访问 1 &#xff09;指令集 1.1 allow 语法结构: allow address | CIDR | UNIX | all all 是放行所有address 可以是 ip 地址…

TCP的连接建立及报文段首部格式

粘包问题&#xff1a; 原因&#xff1a;TCP流式套接字&#xff1b;数据与数据之间没有边界&#xff1b;导致可能多次的数据粘到一起。 解决办法&#xff1a; 规定一些数据与数据之间的间隔符&#xff0c;如&#xff1a;"\aa\", "\r\n"。指定要发送的数据…

如何使用ssm实现游戏攻略网站的设计与实现+vue

TOC ssm052游戏攻略网站的设计与实现vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范…

探究短信里的短链接是如何实现的

简介 我们日常在收短信的时候&#xff0c;会经常发现&#xff0c;他们的短信里的跳转链接&#xff0c;都是非常短非常短的&#xff0c;这是为什么呢&#xff1f; 因为现在短信新规出来&#xff0c;是按字数收费的&#xff0c;而不是按条。比如腾讯云短信新规&#xff0c;70字…

原生js中的防抖节流笔记

防抖,单位时间内&#xff0c;频繁触发&#xff0c;只执行最后一次 效果演示 优化前&#xff0c;不断触发&#xff0c;浪费性能 优化后&#xff0c;只在指定时间内触发 演示代码 import debounce from "/node_modules/lodash-es/debounce.js"; const oBox docu…

专业养生调理保健传承者——五指生望京店开业送健康

2024年8月22日&#xff0c;即处暑时节&#xff0c;五指生望京店盛情开业&#xff01;在这个暑意渐消的美好时节&#xff0c;望京店希冀为更多尊贵生命带来健康。 五指生成立于2001年&#xff0c;作为“全国五星级保健服务机构”&#xff0c;曾先后获得“首都文明单位”“北京市…

Java学习Day34:图书管理小项目

搭建过程 1.根据需求设计数据库 概念设计&#xff1a;使用ER图等工具设计数据库概念模型&#xff0c;明确实体、属性、关系。逻辑设计&#xff1a;将概念模型转换为数据库表结构&#xff0c;确定主键、外键、索引等。物理设计&#xff1a;根据数据库管理系统的特性进行物理存…

【运维】docker搭建portainer

1.拉取镜像 并 启动容器 1.1 拉取镜像 docker pull 6053537/portainer-ce1.2 启动容器 docker run -d --restartalways --name"portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce2.访问地址 ip地址9000端口 密码&…