我们在写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相关推荐

  1. 如何将stdin、stdout、stderr重定向到/dev/null

    如何将stdin.stdout.stderr重定向到/dev/null Q: 我使用了如下代码将stdin.stdout.stderr重定向到/dev/null freopen( "/dev ...

  2. 什么是标准输入、标准输出(stdin、stdout)?

    原文地址:什么是标准输入.标准输出(stdin.stdout)? 要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO 的 I 是 Input 的意思,O 是 output 的意思. 意味着输入和 ...

  3. UNIX环境高级编程笔记(2)- STDIN_FILENO、STDOUT_FILENO和stdin、stdout的区别

    目录 前言 一.STDIN_FILENO.STDOUT_FILENO介绍 二.stdin.stdout介绍 三.代码例程 1.文件描述符的使用 2.流的使用 3.代码标记 总结 前言 本章主要通过UN ...

  4. php stderr,php标准输入与输出(STDIN、STDOUT、STDERR)

    例子,phpinput脚本cmd终端 复制代码 代码示例: // ask for input fwrite(stdout, "enter your name: "); // get ...

  5. 什么是stdin、stdout?

    要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO的I是Input的意思,O是output的意思. 意味着输入和输出. 更确切的含义是 I:从外部设备输入到内存 O:从内存输出到外部设备 而标准 ...

  6. 怎样在windows环境中启动某控制台程序并改变它的stdin、stdout和stderr? http://book.77169.org/ask18/how106297.htm

    ? MSDN里面有一些文档可以看看,方法是利用CreateProcess的 LPSTARTUPINFO 参数, 设置dwFlags为STARTF_USESTDHANDLES: 然后自定义: HANDL ...

  7. stdin、stdout、stderr和STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO的区别和联系

    转载自:https://blog.csdn.net/yeyuangen/article/details/6781999 1.STDIN_FILENO的作用: ①STDIN_FILENO属于系统API接 ...

  8. 关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)

    本人初学<算法(第四版 谢路云译)>有一段时间了,对于初学者按书敲完第一个BinarySearch二分查找算法发现运行错误,我相信大家跟我一样内心是崩溃的.还好经过翻看多个相关论坛以及自己 ...

  9. c中的stderr、stdout、stdin差别

    linux下,一切皆文件.在所有的文件描述符中,有三个是已经被固定占用了,分别是stdin(文件描述符为0).stdout(文件描述符为1).stderr(文件描述符为2).stdin是标准输入,默认 ...

最新文章

  1. 人工智能乌托邦 迪拜认为2071年人类应该这样生活!
  2. [Asp.net]c#中的斜杠和反斜杠
  3. 牛客竞赛语法入门班函数与递归习题【未完结】
  4. 2019-04(2)Python学习
  5. Winodws Socket I/O模型的整理
  6. linux 配置EPEL源
  7. linux笔记-硬链接和符号链接
  8. 如何选择行业,让选择大于努力
  9. ajaxpro定时刷新页面
  10. eclipse的Windows builder使用。
  11. 小小flash动画_信息追梦人 | 动画制作专业优秀毕业生周海倩
  12. win10去快捷方式箭头
  13. 森林安全守护者来了!
  14. 前端程序员必看的网站专属前端程序员的“hao123“
  15. 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient
  16. endnote文件enl突然没了_科学网—实际操作中的Endnote库文件损坏修复方法 - 尹卓忻的博文...
  17. 【NLP相关】NLP的发展历程
  18. 学习Ansible自动化
  19. 如何添加斗龙云下架游戏?
  20. “生动”讲解——矩阵的空间变换

热门文章

  1. mybatis对数据库的操作,删除表,新建表,修改表。
  2. Qt creator常用快捷键退出全屏与进入全屏
  3. sqlserver中的字符编码、排序规则、nvarchar和varchar、大N‘‘
  4. nvarchar在mysql中是_如何在MySQL中创建NVARCHAR列?
  5. mfc 对话框透明 控件不透明_液体窗户会在热量中变得不透明并节省能源
  6. process.env.NODE_ENV详解
  7. 乘法逆元求法的一些总结
  8. oracle trunc函数 q,Oracle之trunc函数
  9. 生成ResultMap
  10. 独立站即web3.0,国家“十四五“规划要求企业建数字化网站!