重定向stdout到文件

把stdout重定向到文件
两种方法:
第一种方法没有恢复

通过freopen把stdout重新打开到文件

#include <stdio.h>

FILE *stream;
void main( void )
{
stream = freopen( "freopen.out", "w", stdout ); // 重定向

if( stream == NULL )
fprintf( stdout, "error on freopen\n" );
else
{
//system( "type freopen.out" );
system( "ls -l" );
fprintf( stream, "This will go to the file 'freopen.out'\n" );
fprintf( stdout, "successfully reassigned\n" );
fclose( stream );
}
fprintf( stdout, "this is not print out\n" );//这里没有输出
//system( "ls" );//没有会造成问题,需要小心
}

输出结果
[img]http://dl2.iteye.com/upload/attachment/0094/5100/ab6c3892-cc38-3d7f-be86-e5aa9546628f.jpg[/img]
----------------------
第二种方法使用dup复制
先把 1 复制出来
然后建立个文件,用fileno取到文件描述符 覆盖到1
所有对1的操作都输出到文件了
用完之后,再把开始复制出来的 用dup2还给 1

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( )
{
int old;
FILE *new;
old = dup( 1 ); // 取标准输出句柄
if( old == -1 )
{
perror( "dup( 1 ) failure" );
exit( 1 );
}
write( old, "This goes to stdout first\r\n", 27 );
if( ( new = fopen( "data", "w" ) ) == NULL )
{
puts( "Can't open file 'data'\n" );
exit( 1 );
}
if( -1 == dup2( fileno( new ), 1 ) )//把文件的描述符给到1,1就不代表stdout了
{
perror( "Can't dup2 stdout" );
exit( 1 );
}
system( "ls -l" );
puts( "This goes to file 'data'\r\n" );
fflush( stdout );
fclose( new );
dup2( old, 1 ); // 恢复
puts( "This goes to stdout\n" );
puts( "The file 'data' contains:" );
//system( "type data" );
system( "file data" );
}

输出结果
[img]http://dl2.iteye.com/upload/attachment/0094/5098/2906b24b-49b8-36fe-9cc4-4b209d90ef87.jpg[/img]
STDOUT_FILENO文件描述符的重定向及还原 (dup2函数用法) Linux系统编程 在重定向之前保存默认文件描述符,在向text文件写入后再还原STDOUT_FILENO描述符 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<sys/types.h> int main(int argc, char* argv[]) { int sfd,ret; sfd=dup(STDOUT_FILENO); // 阅读详情

相关推荐

如何在 Linux 中将输出重定向到文件和标准输出

在 Linux 系统中,输出重定向是一项非常有用的功能,可以帮助我们将命令的输出保存到文件中或者传递给其他命令进行进一步处理。通过标准输出重定向,我们可以将命令的输出重定向到文件中,而不是显示在终端上。有时候,在执行命令时,我们希望临时禁用输出重定向,以便命令的输出直接显示在终端上而不是重定向到文件中。在 Linux 中,有时候我们希望将命令的标准输出和标准错误都重定向到同一个文件中,以便更方便地查看命令的所有输出。而结合重定向操作,我们可以将管道的输出重定向到文件中,以便稍后查看和分析。

网络技术联盟站 4088

stdout stderr 重定向到文件

stdout/stderr 重定向到新文件,重定向到已经打开的文件,命令行的重定向

knowledgebao的博客 2391

【代码审计】RuoYi定时任务漏洞:从SQL注入到RCE的攻防演变

本文深入剖析了RuoYi框架定时任务模块从早期版本无校验到引入黑白名单机制,再到被组合利用实现RCE的完整漏洞演变过程。文章详细分析了SQL注入与定时任务功能结合导致的远程代码执行漏洞,并总结了代码审计与安全开发的核心要点,为开发者提供了重要的安全参考。

yellow的专栏 699

重定向stdout的输出

在这种方式下只有当调用close函数时数据才会写入到文件,若需要实时写入到文件,则设置stdout的缓存为空,setbuf(stdout, NULL)。使用freopen函数指定stdout重定向到output.txt 文件中,后续程序中printf函数打印都会输出到文件。stdout 标准输出 屏幕。默认的输入输出都是有指定的文件描述符,而且是固定的。这样就可以让标准输出被系统直接扔掉,或者。所以我们再运行程序是可以使用以下方式。1. 程序启动的时候指定输出。

qq_41851997的博客 908

STM32 Nucleo-144开发板开箱bring-up

最近做项目,用到STM32F446ZET6这款MCU,为了赶进度,前期软件需要提前开发,于是在某宝买了对应主控的官方开发板,为了避免遗忘,后面能翻出来回忆一些细节,就形成了本篇的主要内容,同时也希望能够帮助刚上手的小伙伴少走弯路,如果对你有帮助请点赞、收藏、转发,谢谢!

汽车电子软件领域知识分享 2677

智能车图像处理5-入门级分析4 ---环岛的状态机与补线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 8235

标准输出和错误流的重定向

重定向标准输出(stdout)和标准错误(stderr)流,使其输出到控制台或者文件

心愿许得无限大 1564

uniapp(vue3):实现手机拍照或相册图片上传后给图片添加水印,uniapp实现多端图片上传、拍照上传自定义插入水印内容,调用手机摄像头打开相机并在周围悬挂自定义水印(支持文字水印/图片水印等)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uni-app为图片添加自定义水印(解决生成图片不全问题),uniapp上传图片添加水印,uniapp H5实现手机拍照或相册上传图像并添加自定义水印,uniapp水印相机,uni-app为图片添加自定义水印,怎么在图片上加水印,图片水印,上传照片带水印,从相册选择图片加水印功能,拍完照片给图片加水印,添加照片水印,uniapp图片加水印,为图片添加自定义水印,uni-app上传图片并添加水印,上传图

✅ 精选推荐文章 3263

Linux常用命令——输入输出重定向 详解

在Linux系统中,输入输出重定向是一个强大的功能,用于将命令的输入和输出重定向到文件或其他命令。通过重定向,可以将标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)重定向到不同的地方。

Darrich的博客 1514

46、大数据助力SDN优化流量管理与控制器

本文探讨了大数据在软件定义网络(SDN)中的应用,重点分析了如何利用大数据技术优化SDN控制器的可扩展性和弹性。通过介绍SDN控制器的核心功能及其面临的挑战,提出了集中式、分布式、混合式和分层式控制器放置策略,并结合大数据分析系统架构与技术,详细阐述了在控制器放置优化、流聚合和备份路径识别等场景中的实际应用。文章还给出了大数据分析在SDN控制器优化中的操作流程与优势,展望了未来结合人工智能与物联网的发展方向,强调了数据安全与算法效率的重要性。

xx56789的博客 86

【实战篇导读】四足机器人运动控制导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人运动运动控制系统及相关算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章主要介绍了波士顿spot机器人的发展历史、四足机器人的硬件系统及电机执行器组成包括硬件系统、关节电机执行器,机载传感器机处理器及电气连接等。概述了四足机器人规划控制、感知、定位及局部地图的相关算法方向。

qq_35635374的博客 678

C++ stderr/stdout 重定向到文件

通常,stderr和stdout被用来输出内容显示到控制台,但是,有时候我们需要把这些信息写到指定的文件,方便随时查阅。最简单的实现方式就是,把 stderr/stdout 的输出重定向到文件。文章先说明C/C++如何重定向 stderr/stdout 到文件,同时也说明stderr与stdout的主要区别,以及如何转变stderr /stdout 的缓冲类型。

没有开花的树 2万+

国家自然基金研究方向选定后,关键词只能下拉吗?——不是的,国家自然科学基金(NSFC)的关键词并不是只能下拉选择,而是:[特殊字符] “可选 + 可填”的混合模式(但以规范词为主)

你可以手动输入关键词用于表达新兴方向或细分领域✔ 适用情况:新概念(如“电场调控纳米流体”)交叉领域(如“电流体力学传热耦合”)电场调控电流体力学可以自己填,但必须以系统标准关键词为主,自定义为辅如果你愿意,我可以帮你做一件更关键的事:👉根据你题目,反向设计“最容易中标”的关键词组合 + 学科代码搭配这个比写内容本身还更影响送审质量。你可以手动输入关键词用于表达新兴方向或细分领域✔ 适用情况:新概念(如“电场调控纳米流体”)交叉领域(如“电流体力学传热耦合”)电场调控电流体力学。

qq_15963745的博客 81

将stdout重定向到Python中的文件?

How do I redirect stdout to an arbitrary file in Python? 如何在Python中将stdout重定向到任意文件? When a long-r

xfxf996的博客 852

【LLM技术全景】规模定律与模型演进:为什么模型越大越强?

规模定律性能 ∝ 参数量^N性能 ∝ 数据量^M性能 ∝ 计算量^L其中 N, M, L 是小于1的正数(通常0.05~0.15)关键观察损失与规模的关系呈幂律(不是线性,也不是对数)三个要素(参数、数据、计算)需要协调增长只增加其中一个要素,收益会边际递减规模定律(Scaling Law):1. 模型性能与参数量、数据量、计算量呈幂律关系2. Kaplan定律(2020):参数量是主要因素3. Chinchilla定律(2022):数据和参数同等重要,最优比例1:20。

专注:太空算力、AI infra、异构调度、大模型成本工程 495

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

php://stdout,如何将STDOUT重定向到PHP中的文件?

如何将STDOUT重定向到PHP中的文件?下面的代码几乎可以正常工作,但这并不是我真正的意思:ob_start();echo 'xxx';$contents = ob_get_contents();ob_end_clean();file_put_contents($file,$contents);有没有更自然的方法?omg asked 2020-01-04T18:05:29Z7个解决方案123 v...

weixin_42554162的博客 392

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python stdout_将stdout重定向到Python中的文件?

from contextlib import redirect_stdoutwith open('help.txt', 'w') as f:with redirect_stdout(f):print('it now prints to `help.text`')它类似于:import sysfrom contextlib import contextmanager@contextmanagerde...

weixin_39874269的博客 495

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

如何在Linux上重定向sudo命令的STDOUT并以root身份写入文件?

A try like the following command failed 像下面的命令尝试失败 $ sudo echo "echo hello" > /usr/local/bin/hellowith an message 一条消息 bash: /usr/local/bin/hello: Permission deniedIt seems the writing to the fil...

cuma2369的博客 669

c++输出重定向 linux,C++ stderr/stdout 重定向到文件

通常,stderr和stdout被用来输出内容显示到屏幕,但是,有时候我们需要把这些信息写到指定的文件,方便随时查阅。最简单的实现方式就是,把 stderr/stdout 的输出重定向到文件。stderr/stdout 重定向到文件这里以stderr代码说明。#include #include int main( void ){FILE *stream = freopen( "freopen.ou...

weixin_39633090的博客 1226

如何重定向stdout,stderr到文件

iOS开发中,经常遇到stdout,在lldb能看到,但是到了console中就无法查看,这样没有yu

1647

如何使用Bash将stdout和stderr重定向并附加到文件?

要将stdout重定向到Bash中的截断文件,我知道使用: cmd > file.txt 为了重定向Bash中的stdout ,将其附加到文件中,我知道要使用: cmd >&

p15097962069的博客 571

PHP实现将输出stdout重定向到文件

PHP守护进程中如果有类似echo, print_r这样的输出语句的话,那么该守护进程依然依赖于终端,如果此终端关闭,那么守护进程将会出错退出,在正常情况下守护进程是不需要任何输出的,因为没有任何意义,但是不排除你忘记注释了某个调试输出语句。而该语句又不会影响接口响应,为了防止进程退出,需要事先注释掉输出语句,或者将输出重定向到console文件。 <?php global $STDOUT,...

猛犸象 1672

linux附加重定向,关于Linux:如何将stdout和stderr重定向并附加到带有bash的文件中?...

要将stdout重定向到bash中的截断文件,我知道要使用:cmd > file.txt要重定向bash中的stdout,附加到一个文件,我知道要使用:cmd >> file.txt要将stdout和stderr重定向到截断的文件,我知道要使用:cmd &> file.txt如何重定向附加到文件的stdout和stderr?埃多克斯一〔0〕没有为我工作。我要注意,o...

weixin_35701747的博客 726

linux删除stdout文件清空,linux – 将stdout重定向到无法正常工作的文件

misha@misha-K42Jr:~/git/domain_classifier$python webkit_retrieve.py error-cut.txt html/error -N 5http://kurabo.co.jp HostNotFoundErrorhttp://monarch.com HostNotFoundErrorhttp://nssmgmt.com HostNotFoun...

weixin_33195162的博客 320

超级马里奥64反编译 sm64 完整指南:3 条命令运行源码,改出你自己的 ROM

有一款三十年前的老游戏,你可以用编辑器打开、逐行读懂、随便改。超级马里奥64反编译项目 sm64 把《超级马里奥64》的日版、美版、欧版、Shindou 和 iQue 五个版本完整还原成了可读可改的 C 源码——从源码编出的 ROM 与原版逐字节一致。 ## 三步跑起来:从代码到可玩的 ROM 跑起来之前先说清楚三件事:拉代码、补资源、编译。 1. **拉代码**。把仓库克隆下来:

gitblog_01093的博客 437

在python中如何重定向标准输出stdout到文件代码示例

import sys oldStdout = None logfile = None try: logfile = open('d:/1.log','w+') oldStdout = sys.stdout sys.stdout = logfile print 'Hello World in File Log!' finally: if logfile: log

花果山 6634
上一篇: 通过nginx远程执行shell
下一篇: sqoop从mysql到数据到hadoop中
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值