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点即可!
stderr 和stdout的更多相关文章
- stderr和stdout详细解说
今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...
- stderr和stdout详细解说(转)
今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...
- 标准输出中stderr和stdout的区别
一.首先介绍一下三者printf,sprintf,fprintf的功能 1,printf就是标准输出,在屏幕上打印出一段字符串来. 2,sprintf就是把格式化的数据写入到某个字符串中.返回值字符串 ...
- stderr和stdout(printf、fprintf、sprintf)(转)
本文转自:http://www.cnblogs.com/zhangyabin---acm/p/3203745.html 先区分一下:printf,sprintf,fprintf. 1,printf就是 ...
- fprintf与stderr、stdout的使用
#include <stdio.h> void main() { fprintf(stderr,"soyo8888!"); fprintf(stdout,"s ...
- 解决linux环境下nohup: redirecting stderr to stdout问题
在生产环境下启动Weblogic时,发现原来好好的nohup信息输出到指定文件中的功能,突然出问题了.现象是控制台输出的信息一部分输出到了我指定的文件,另一部分却输出到了nohup.out,而我是不想 ...
- (转)Windows管道(Pipe)重定向stdout,stderr,stdin
参考: http://qiusuoge.com/11496.html http://www.cnblogs.com/BoyXiao/archive/2011/01/01/1923828.html st ...
- Linux Shell 文件描述符 及 stdin stdout stderr 重定向
Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已 ...
- linux stdin(0)/ stdout(1) / stderr(2)
在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout.标准错误stderr,三个系统文件的文件描述符分别为0,1.2.进程需要的输入来自stdin文件.进程的标准输 ...
随机推荐
- 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)
洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要 ...
- 自学Aruba2.2-Aruba Web UI --Monitoring面板介绍
点击返回:自学Aruba之路 自学Aruba2.2-Aruba Web UI --Monitoring面板介绍 1. Monitoring面板-NETWORK Network Summary ...
- 【BZOJ2484】[SDOI2011]打地鼠(暴力)
[BZOJ2484][SDOI2011]打地鼠(暴力) 题面 BZOJ 洛谷 题解 看到数据范围这题就应该是一个暴力题了. 先考虑假如我们知道了锤子的大小\(R*C\),那么显然只需要从左上角开始从左 ...
- 神奇的操作——线段树合并(例题: BZOJ2212)
什么是线段树合并? 首先你需要动态开点的线段树.(对每个节点维护左儿子.右儿子.存储的数据,然后要修改某儿子所在的区间中的数据的时候再创建该节点.) 考虑这样一个问题: 你现在有两棵权值线段树(大概是 ...
- 如何同时修改SharePoint帐号和AD帐号的密码 - 批量修改SharePoint Managed Account
cls if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq ...
- .net连接ORACLE数据库
这段时间维护客户的一个系统,该系统使用的是ORACLE数据库,之前开发的时候用的都是MSSQL,并没有使用过ORACLE.这两种数据库虽然都是关系型数据库,但是具体的操作大有不同,这里作下记录. 连接 ...
- 【CF1042D】Petya and Array
题目大意:给定一个 N 个数组成的序列,给定一个 T,求有多少个区间满足\(\sum_{i=l}^ra[i]<T\). 题解:区间和问题可以用前缀和优化,即:求有多少个区间满足\(sum[r]- ...
- IDEA进行远程调试
biz-test本地调用测试环境01机器上面的needle项目,卡在查询数据库的地方(Jade停住不走了) 首先配置 相关项目 的服务器端部署jvm参数: 在needle的config.pp.temp ...
- NOIP 普及组 2014 比例简化
传送门 https://www.cnblogs.com/violet-acmer/p/9898636.html 题解: 一开始想多了,以为得保证两者之间的相对比率,至少不能改变的太离谱啊. but,直 ...
- Ansible playbook 批量修改服务器密码 先普通后root用户
fsckzy Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...