stdin、stdout
我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用。说到这不得不提及stdin,stdout,stderr。想想,我们在用C去写文件时的操作,File *fp=fopen(),这个fp就是我们向系统申请的,相当于一通往文件的通道。
其实,stdin,stdout,stderr就是这个fp,不过他是随着计算机系统的开启默认打开的,其中0就是stdin,表示输入流,指从键盘输入,1代表stdout,2代表stderr,1,2默认是显示器。printf()其实就是向stdout中输出,等同于fprintf(stdout,“*”),perror()其实就是向stderr中输出,相当于fprintf(stderr,“”),那到底stdout,和stderr有什么区别和作用呢?
我们在写程序时用printf()是为了我们能监控我们的程序运行状况,或者是说debug,如果我们的程序是一直运行,不停下来,我们不可能时刻盯着屏幕去看程序输出,这时我们就可以用文件重定向。将输出到一文件中,我们以后就可以看这文件就行。举个例子,test.c
编译过后,./test,屏幕上是四条输出,如果./test > test.ext ,结果是屏幕上输出两条Stderr Hello World!!,Stdout Helo World!!在文件test.txt中,基于上面说的很容易理解现在的结果,于是我们可以随便处理我们想要的输出,例如:
./test 1>testout.txt 2>testerr.txt,我们将stdout输出到文件testout.txt中,将stderr输出到testerr.txt文件中;
./test 1>testout.txt ,将stdout输出到文件testout.txt 中,stderr输出到屏幕上;
./test 2>testerr.txt,将stderr输出到文件testerr.txt中,stdout输出到屏幕上;
./test > test.txt 2>&1,这是将stdout和stderr重定向到同一文件test.txt文件中。
如果我们不想看到输出内容,既不想在屏幕上看见,也不想重定向到文件中,别担心,万能的Linux
Note:stderr,和stdout还有重要一点区别,stderr是没有缓冲的,它立即输出,而stdout默认是行缓冲,也就是它遇到‘\n’,才向外输出内容,如果你想stdout也实时输出内容,那就在输出语句后加上fflush(stdout),这样就能达到实时输出的效果。
参考链接:
link
stdin、stdout相关推荐
- 如何将stdin、stdout、stderr重定向到/dev/null
如何将stdin.stdout.stderr重定向到/dev/null Q: 我使用了如下代码将stdin.stdout.stderr重定向到/dev/null freopen( "/dev ...
- 什么是标准输入、标准输出(stdin、stdout)?
原文地址:什么是标准输入.标准输出(stdin.stdout)? 要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO 的 I 是 Input 的意思,O 是 output 的意思. 意味着输入和 ...
- UNIX环境高级编程笔记(2)- STDIN_FILENO、STDOUT_FILENO和stdin、stdout的区别
目录 前言 一.STDIN_FILENO.STDOUT_FILENO介绍 二.stdin.stdout介绍 三.代码例程 1.文件描述符的使用 2.流的使用 3.代码标记 总结 前言 本章主要通过UN ...
- php stderr,php标准输入与输出(STDIN、STDOUT、STDERR)
例子,phpinput脚本cmd终端 复制代码 代码示例: // ask for input fwrite(stdout, "enter your name: "); // get ...
- 什么是stdin、stdout?
要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO的I是Input的意思,O是output的意思. 意味着输入和输出. 更确切的含义是 I:从外部设备输入到内存 O:从内存输出到外部设备 而标准 ...
- 怎样在windows环境中启动某控制台程序并改变它的stdin、stdout和stderr? http://book.77169.org/ask18/how106297.htm
? MSDN里面有一些文档可以看看,方法是利用CreateProcess的 LPSTARTUPINFO 参数, 设置dwFlags为STARTF_USESTDHANDLES: 然后自定义: HANDL ...
- stdin、stdout、stderr和STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO的区别和联系
转载自:https://blog.csdn.net/yeyuangen/article/details/6781999 1.STDIN_FILENO的作用: ①STDIN_FILENO属于系统API接 ...
- 关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)
本人初学<算法(第四版 谢路云译)>有一段时间了,对于初学者按书敲完第一个BinarySearch二分查找算法发现运行错误,我相信大家跟我一样内心是崩溃的.还好经过翻看多个相关论坛以及自己 ...
- c中的stderr、stdout、stdin差别
linux下,一切皆文件.在所有的文件描述符中,有三个是已经被固定占用了,分别是stdin(文件描述符为0).stdout(文件描述符为1).stderr(文件描述符为2).stdin是标准输入,默认 ...
最新文章
- 人工智能乌托邦 迪拜认为2071年人类应该这样生活!
- [Asp.net]c#中的斜杠和反斜杠
- 牛客竞赛语法入门班函数与递归习题【未完结】
- 2019-04(2)Python学习
- Winodws Socket I/O模型的整理
- linux 配置EPEL源
- linux笔记-硬链接和符号链接
- 如何选择行业,让选择大于努力
- ajaxpro定时刷新页面
- eclipse的Windows builder使用。
- 小小flash动画_信息追梦人 | 动画制作专业优秀毕业生周海倩
- win10去快捷方式箭头
- 森林安全守护者来了!
- 前端程序员必看的网站专属前端程序员的“hao123“
- 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient
- endnote文件enl突然没了_科学网—实际操作中的Endnote库文件损坏修复方法 - 尹卓忻的博文...
- 【NLP相关】NLP的发展历程
- 学习Ansible自动化
- 如何添加斗龙云下架游戏?
- “生动”讲解——矩阵的空间变换
热门文章
- mybatis对数据库的操作,删除表,新建表,修改表。
- Qt creator常用快捷键退出全屏与进入全屏
- sqlserver中的字符编码、排序规则、nvarchar和varchar、大N‘‘
- nvarchar在mysql中是_如何在MySQL中创建NVARCHAR列?
- mfc 对话框透明 控件不透明_液体窗户会在热量中变得不透明并节省能源
- process.env.NODE_ENV详解
- 乘法逆元求法的一些总结
- oracle trunc函数 q,Oracle之trunc函数
- 生成ResultMap
- 独立站即web3.0,国家“十四五“规划要求企业建数字化网站!