stderr和stdout详细解说
今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣。
int fprintf(FILE *stream,char *format,[argument]);
在此之前先区分一下:printf,sprintf,fprintf。
1,printf就是标准输出,在屏幕上打印出一段字符串来。
2,sprintf就是把格式化的数据写入到某个字符串中。返回值字符串的长度。
3,fprintf是用于文件操作。
原型:int fprintf(FILE *stream,char *format,[argument]);
功能:fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指 定的文件。
例子:
char name[20] = "lucy";
FILE *out;
out = fopen( "output.txt", "w" );
if( out != NULL )
fprintf( out, "Hello %s\n", name );
返回值:若成功则返回输出字符数,若输出出错则返回负值。
好了,以上到此为止。
然后深挖stdout,stderr。
stdout, stdin, stderr的中文名字分别是标准输出,标准输入和标准错误。
今天时间仓促,以下摘自
http://blog.sina.com.cn/s/blog_912673ce01013qq9.html(十分感谢)
1,我们知道,标准输出和标准错误默认都是将信息输出到终端上,那么他们有什么区别呢?让我们来看个题目:
问题:下面程序的输出是什么?(intel笔试2011)
int main(){
fprintf(stdout,"Hello ");
fprintf(stderr,"World!");
return0;
}
解答:这段代码的输出是什么呢?你可以快速的将代码敲入你电脑上(当然,拷贝更快),然后发现输出是
World!Hello
这是为什么呢?在默认情况下,stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出,举例来说就是printf(stdout, "xxxx") 和 printf(stdout, "xxxx\n"),前者会憋住,直到遇到新行才会一起输出。而printf(stderr, "xxxxx"),不管有么有\n,都输出。
2,fprintf(stderr, "Can't open it!\n");
fprintf(stdout, "Can't open it!\n");
printf("Can't open it!\n");
这3句效果不是一样啊,有什么区别吗?
有区别。
stdout -- 标准输出设备 (printf("..")) 同 stdout。
stderr -- 标准错误输出设备
两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。
例如:
my.exe
Can't open it!
Can't open it!
Can't open it!
转向标准输出到磁盘文件tmp.txt
my.exe > tmp.txt
Can't open it!
用TYPE 看 tmp.txt的内容:
TYPE tmp.txt
Can't open it!
Can't open it!
总结:注意1,点,2点即可!
https://www.cnblogs.com/zhangyabin---acm/p/3203745.html
转载于:https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/10774437.html
stderr和stdout详细解说相关推荐
- Qt工作笔记-自定义打印及存日志及stderr转stdout(Linux程序调试技巧,提高开发效率)
如下的代码: #include <QCoreApplication> #include <QDebug> #include <QByteArray> #includ ...
- 在Bash中重定向stderr和stdout
我想将一个进程的stdout和stderr都重定向到一个文件. 我该如何在Bash中做到这一点? #1楼 对于tcsh,我必须使用以下命令: command >& file 如果使用co ...
- stderr和stdout区别
stdout是默认向到屏幕,但是可以将标准输出重定向到磁盘文件 有区别. stdout -- 标准输出设备 (printf("..")) 同 stdout. stderr -- ...
- c中的stderr、stdout、stdin差别
linux下,一切皆文件.在所有的文件描述符中,有三个是已经被固定占用了,分别是stdin(文件描述符为0).stdout(文件描述符为1).stderr(文件描述符为2).stdin是标准输入,默认 ...
- nohup: redirecting stderr to stdout
问题: 执行kafka启动脚本时,出现如下提示. [root@node03 bin]# sh start.sh nohup: redirecting stderr to stdout 脚本内容: [r ...
- stderr和stdout(printf、fprintf、sprintf)(转)
先区分一下:printf,sprintf,fprintf. 1,printf就是标准输出,在屏幕上打印出一段字符串来. 2,sprintf就是把格式化的数据写入到某个字符串中.返回值字符串的长度. 3 ...
- python stdout stderr 一起输出_python – 使用subprocess.Popen()时,stderr和stdout没有输出
我正在使用 Python来自动化SVN提交,我想将SVN命令的输出写入日志文件.我有的代码可以使SVN运行,但问题是在成功提交时,子进程调用不会返回我的日志的任何输出. 当我手动运行SVN时,通过比较 ...
- Unix——fprintf与stderr、stdout的使用
先看一段程序 // 保存为fprintf.c #include <stdio.h>int main(){fprintf(stderr,"stderr on screen\n&qu ...
- stderr 和 stdout有什么区别?
最近看程序,经常碰到stderr, 在一般的小程序中很少用到这些,查阅了很多网上资料,没太看懂,我们先来看一下程序: #include<stdio.h>int main() {fprint ...
最新文章
- 一、预备知识―程序的内存分配
- 下载CentOS7、CentOS8镜像(ISO)
- 什么样的域名利于网站SEO优化?
- Cascade R-CNN的一些记录
- java 二进制文件拷贝_Java复制二进制文件
- Netflix如何节省92%视频编码成本?
- 变量命名 – 匈利亚命名法则 - C语言零基础入门教程
- 漫画:什么是 “模因” ?
- java小白会有那些工作_Java小白找工作与学习的第二天
- Linux 的 ‘sort’命令的14个有用的范例(一)
- jenkins配置邮件通知
- 结合ENVI与ArcMAP的NC数据处理(均值、最大最小值等)心得记录
- 生产计划排程、车间工序排程、APS高级计划与排程
- 行路难PPT计算机考试,《行路难》公开课.ppt
- 激光雷达是什么?为什么移动机器人必不可少?
- 复杂业务系统的架构设计思路
- ESP8266 下载报错please check partition type 6 addr:3fd000 len:3000
- 脉冲神经网络原理及应用,脉冲神经网络结构特点
- Oracle报表计算合计函数ROLLUP
- 奇瑞新能源小蚂蚁,一款实用好看的居家小车
热门文章
- 恋上数据结构完整笔记(第1季 + 第2季)
- 从零开始带你部署springboot项目到ubuntu服务器05
- 帆软实现单元格可编辑内容并保存
- php sphinx mysql_windows7使用Sphinx+PHP+MySQL详细介绍
- python cryptography key加密_python3利用cryptography 进行加密和解密
- 判断一个点是否在矩形内部_矩形、圆形泄水管规格型号优势
- python网络监控程序_python linux监控程序
- eclipse 64位_Eclipse安装教程
- 加入rtp组播_耗时10+小时撰写 带你系统认识组播 收藏这些概念
- 【基础数论】欧拉函数