一、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函数在程序中进行输出重定向.

函数声明:

参数说明:

使用方法:

#从文本输入
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

Linux fprintf的用法相关推荐

  1. Linux下wine用法

    Linux下wine用法 下面是wine的使用方法. 一.要在Linux下运行,wine是必不可少的,所以,请将wine安装到你的系统里. 二.将你的Windows所在的分区加载到某个目录.(本文假定 ...

  2. linux md5sum 的用法(转)

    MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度 ...

  3. Linux export 命令用法

    Linux export 命令用法 Linux export 命令用于设置或显示环境变量. 在 shell 中执行程序时,shell 会提供一组环境变量.export 可新增,修改或删除环境变量,供后 ...

  4. Linux epoll的用法

    Linux epoll的用法 epollfd_create函数 #include <sys/epoll.h>int epoll_create (int __size) 参数 含义 __si ...

  5. Linux中find用法整理

    一.Linux中find常见用法示例 ·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} /; ...

  6. Linux cat 命令用法

    cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从键盘创建一个文件. $ cat > filename 只能创建新文件,不能编辑已有文件. 3.将几个文件合并为 ...

  7. c语言strTrimed函数用法介绍,linux type命令用法_转

    在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ type foo >/dev/null 2>&1 || { echo > ...

  8. linux signal用法,Linux 信号 signal 用法详解及注意事项

    Linux 信号 signal 用法详解及注意事项 1) SIGHUP 本信号在用户终端连接 (正常或非正常) 结束时发出, 通常是在终端的控 制进程结束时, 通知同一 session 内的各个作业, ...

  9. linux下rdesktop用法

    我自己用的参数rdesktop -g workarea -D -r clipboard:PRIMARYCLIPBOARD -a 16 -x lan 192.168.1.2 rdesktop是Linux ...

最新文章

  1. python compileall 打包发布
  2. 复习1 - String,StringBuilder,StringBuffer的执行效率区别
  3. oracle 9i aix 迁移,Oracle 9i 在AIX上的安装 (转)
  4. WCF 第五章 行为 以属性为服务操作行为暴露一个参数检测器
  5. MyBatis关键配置-创建会话工厂
  6. HDU - 4253 Two Famous Companies(二分+最小生成树)
  7. python端口被占用_端口被占用怎么解决
  8. Customer Report这个Fiori应用必须和CRM耦合在一起么
  9. /UI5/IF_UI5_REP_PERSISTENCE - why I cannot deploy app to GM6
  10. dhcp服务器显示主机名,linux – 当我没有在dhclient.conf中定义一个时,我的DHCP服务器如何知道我的机器的主机名?...
  11. php mysql练手_ThinkPHP5练手Demo实战
  12. bzoj2460 [BeiJing2011]元素 贪心+线性基
  13. Go语言学习之8 goroutine详解、定时器与单元测试
  14. java 图片怎么设置抗锯齿,图片变形的抗锯齿处理方法
  15. Hamilton哈密顿最短路径(二进制状态压缩)
  16. 目标跟踪 SiamRPN++(SiamRPN++:Evolution of Siamese Visual Tracking with Very Deep Networks)
  17. notepad集成jsonviewer 查看json
  18. IOS收起键盘的几种办法(摘抄自唐巧《iOS开发进阶》)
  19. 再见,安卓开发权威指南
  20. java.lang.Long常用方法

热门文章

  1. Javascript弹出div层
  2. [导入]使用SqlCommand对象执行存储过程
  3. 【STC15库函数上手笔记】3、外部中断
  4. windows组件向导里没有internet 信息服务(iis) 的解决办法
  5. 在dos下运行.exe程序(C++)
  6. [react] react中的setState执行机制是什么呢?
  7. 前端学习(3090):vue+element今日头条管理-参数传递
  8. 前端学习(3078):vue+element今日头条管理-分页总页码的实现
  9. 前端学习(2982):一文理解undefine
  10. [html] 如何阻止屏幕旋转时自动调整字体的大小?