Linux fprintf的用法

一、fprintf 函数描述

fprintf其作用是格式化打印,也叫格式化输出,可以指定输出到一个流文件中,即相输出流中写入数据。fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument)。fprintf( )会根据参数format 字符串来转换并格式化数据,然后将结果输出到参数stream 指定的文件中,直到出现字符串结束('\0')为止。

函数声明:

  • int fprintf (FILE* stream, const char*format, [argument])

参数:

其中,Linux的输出数据流stream提供了5种标准的流:

  1. stdin        标准输入 
  2. stdout      标准输出 
  3. stderr       标准错误
  4. stdprn      标准打印机
  5. stdaux      标准串行设备

stderr的优先级高于stdout,在输出调试信息的时候,优先使用fprintf(stderr,...),或者某个指定的文件流fprintf(some_stream,...)。

二、shell 输出重定向

需要说明的是stdin并不一定来自键盘,stdout也并不一定显示在屏幕上,他们都可以是重定向到磁盘文件或其他设备上。

shell下stdin,stdout和stderr的文件描述符分别是0,1和2。

2.1 采用 > 进行输出重定向,采用>>进行追加方式重定向

$./run > output.log   #每次清空
$./run >> output.log  #每次在outout.log末尾追加

运行./run后的正常日志会输出到output.log文件中,此时错误信息仍然会输出到屏幕。

2.2 分别输出正常日志和错误日志,2> 代表stderr重定向

$./run > output.log 2> error.log

2.3 错误日志合并到正常日志

$./run > output.log 2>&1

三、程序中输出重定向

利用freopen函数在程序中进行输出重定向.

函数声明:

  • FILE * freopen(const char *filename, const char *mode,FILE *stream);

参数说明:

  • filename:要打开的文件名;
  • mode:文件打开的模式,和fopen中的模式(r/w)相同。
  • stream:文件指针,通常使用标准流文件(stdin/stdout/stderr)。

使用方法:

#从文本输入
freopen("data.in","r",stdin);  #从屏幕输入   
freopen("/dev/console","r",stdin);#输出到文件
freopen("data.out","w",stdout); 
if(freopen("err.log",w,stderr)==NULL)
{fprintf(stderr,"error redirecting stderr\n");
}#关闭重定向
fclose(stdin);
fclose(stdout);

参考:

  1. freopen 函数和 fopen 函数简单介绍
  2. 百度百科
  3. 关于LINUX C库函数 中的 fprintf

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

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

相关文章

2015 7 18

ExecuteNonQuery返回的是受影响的行数ExecuteScalar返回的是第一行第一列的值 制作密码找回的冻结功能 一个变量 当点击提交密码问题答案时1 达到3次时 数据库中的时间项纪录为当前时间 返回首页 执行找回密码操作时 点击下一步 先进行判定 如果用户名存在 其当前日期-冻…

windows组件向导里没有internet 信息服务(iis) 的解决办法

From: http://blog.163.com/red419126/blog/static/18862284200882155215627/ 电脑要重装系统,借同事的xp光盘,一切顺利。却发现这个新系统添加删除组件向导里没有iis了。怎么办呢? 在运行中输入"c:\windows\inf\sysoc.inf"&…

Linux tm time_t timeval timespec以及与时间相关函数用法

一、时间类型 linux中编程通常需要用到时间变量&#xff0c;和相关的时间操作函数。常用的时间类型有&#xff1a; time_t 、struct timeval、struct timespec、struct tm。 在用到相关的类型和函数时&#xff0c;需要加上头文件&#xff1a;#include <time.h> …

Apache的prefork模式和worker模式

prefork模式 这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器&#xff0c;它的工作方式类似于Apache 1.3。它适合于没有线程安全库&#xff0c;需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM&#xff0c;这样若一个请求出现问题就…

[react] 说说Context有哪些属性?

[react] 说说Context有哪些属性&#xff1f; context属于一种解决组件间层级过多传递数据的问题&#xff0c;避免了层层嵌套的通过props传递的形式&#xff0c;同时对于不需要使用到redux时&#xff0c;是一种解决方案&#xff0c;关于组件的复用性变差的问题&#xff0c;我觉…

艾泰路由器设置虚拟服务器,艾泰路由器设置步骤

艾泰路由器设置步骤艾泰科技路由器默认配置完之后就可以上网&#xff0c;内网私网地址通过WAN口的"NAT转换来上网。但某些特殊时候却不需要NAT模式&#xff0c;用户需要纯路由模式来转发&#xff0c;下面是小编整理的相关内容&#xff0c;欢迎阅读参考&#xff01;ReOS V2…

ubuntu 安装(install) pwntcha[一个做验证码识别的开源程序]

一、安装 1. sudo apt-get install libsdl1.2-dev libsdl1.2debian sudo apt-get install libsdl1.2-dev(比较大&#xff0c;10M左右) sudo apt-get install libsdl-image1.2-dev sudo apt-get install libsdl-mixer1.2-dev sudo apt-get install libsdl-ttf2.0-dev sudo apt-g…

IIS出现The specified module could not be found解决方法

From: http://www.cnblogs.com/hanxianlong/archive/2008/10/25/1319269.html 打开IIS 信息服务&#xff0c;在左侧找到自己的计算机&#xff0c;点右键&#xff0c;选择属性&#xff0c;在主属性中选编辑&#xff0c;打开“目录安全性”选项卡&#xff0c;单击“匿名访问和验…

嵌入式开发中模拟SPI的驱动

这里贴一下自己的模拟SPI驱动&#xff0c;移植的话需要实现SPI管脚的定义和初始化。 一、管脚初始化 MOSI_PIN&#xff1a;设置MOSI为输出模式SCK_PIN&#xff1a;设置SCK为输出模式CSN_PIN&#xff1a;设置CSN为输出模式MISO_PIN&#xff1a;设置MISO为输入模式MOSI_PIN_HIG…

开始整理资料

现在想想为什么这么晚才在CSDN安家&#xff0c;如果大一的时候就开始写博客了&#xff0c;记录生活的点点滴滴&#xff0c;那该有多好。 回去以前做过的许多事情&#xff0c;总是一知半解&#xff0c;如果当时能够想到写博客&#xff0c;那么理解程度就不是现在这个样子了。 知…

[react] 你有使用过React Intl吗?

[react] 你有使用过React Intl吗&#xff1f; 一种react国际化的解决方案 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题 个人简介 我是歌谣&#xff0c;欢迎和…

C语言编程对缓冲区的理解

解析C语言编程对缓冲区的理解 转载自&#xff1a;http://soft.chinabyte.com/database/47/12481547.shtml 下面介绍缓冲区的知识。 一、什么是缓冲区 缓冲区又称为缓存&#xff0c;它是内存空间的一部分。也就是说&#xff0c;在内存空间中预留了一定的存储空间&#xff0c;这些…

ftp文档服务器设置,ftp服务器基本设置

ftp服务器基本设置 内容精选换一换在迁移Agent中输入华为云账号AK/SK以后&#xff0c;AK/SK校验失败。Windows系统提示用户&#xff1a;"AK/SK authentication failed. Ensure that the system time is consistent with the standard time and the AK and SK are corre服务…

浅谈进程间的消息传递

From: http://blog.csdn.net/handsomewang527/article/details/1676259 随着我们开发的应用的日益复杂&#xff0c;像以往那样将所有功能坐在一个exe文件中情况越来越少&#xff0c;更多时候是整个应用由若干模块、甚至若干单独的exe文件组成&#xff0c;这就涉及到了模块或进…

树莓派移植SX1278 LoRa通信--使用wiringPiSPI移植SPI通信接口

一、SPI接口 树莓派3B上的SPI接口如下所示&#xff0c;有两组SPI&#xff0c;分别由CE0和CE1来进行选择。 首先查看树莓派的SPI是否启用&#xff0c;在/dev查看是否有spidev0.0和spidev0.1 如果不存在spi设备号&#xff0c;需要在raspi-config中启用&#xff0c;在命令行输入&…

能说明你的Javascript技术很烂的五个原因

Javascript在互联网上名声很臭&#xff0c;但你又很难再找到一个像它这样如此动态、如此被广泛使用、如此根植于我们的生活中的另外一种语言。它的低学习门槛让很多人都称它为学前脚本语言&#xff0c;它另外一个让人嘲笑的东西是动态语言的概念是偏偏使用了高标准的静态数据类…

[react] 除了实例的属性可以获取Context外哪些地方还能直接获取Context呢?

[react] 除了实例的属性可以获取Context外哪些地方还能直接获取Context呢&#xff1f; Context React.createContext<Context.Provider value{contextValue}> child </Context.Provider>使用 组件式: <Context.Consumer>{contextValue > ...}</Conte…

饥荒专用服务器全图显示代码,饥荒开全图代码

用记事本打开游戏目录\data\DLC0001\scripts\prefabs\player_common.lua文件&#xff0c;在inst:AddComponent("resurrectable")下一行插inst:AddComponent("resurrectable")下一行插入以下内容&#xff1a;  TheInput:AddKeyUpHandler(KEY_1&#xff0c…

树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断

一、SX1278 数字接口状态映射 从官方文档可知sx1278的数字接口状态映射明细&#xff0c;移植的代码中主要用查询的方式来判断在连续模式下是否接收和发送完成&#xff0c;因此只需要用到DIO0。如果要用到CAD&#xff0c;则需要DIO1管脚。 发送时&#xff1a;DioMapping1寄存器…

linux系统中如何查看日志 (常用命令2)

cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志&#xff0c;是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与…