stdin是标准输入文件,stdout是标准输出文件,stderr标准出错文件,应用在输出的重新定位上。

程序按如下方式使用这些文件:

  • 标准输入 是程序可以读取其输入的位置。缺省情况下,进程从键盘读取 stdin

  • 标准输出 是程序写入其输出的位置。缺省情况下,进程将 stdout 写到终端屏幕上。

  • 标准错误 是程序写入其错误消息的位置。缺省情况下,进程将 stderr 写到终端屏幕上。

定义位置:

#include <stdio.h>

extern FILE *stdin;

extern FILE *stdout;

extern FILE *stderr;

stdout -- 标准输出设备 (printf("..")) 同 stdout。
stderr -- 标准错误输出设备
两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。
用法:
fprintf(stderr, "Can't open it!/n");
fprintf(stdout, "Can't open it!/n");

stdin -- 标准输入设备.
用法:
char s[80];
fputs(fgets(s,80,stdin);

通常,每个 Unix 程序在启动时都会打开三个流,一个用于输入,一个用于输出,一个用于打印诊断或错误消息。典型的, 他们被连接到用户的终端(但是也有可能指向文件或是其他设备,取决于父进程选择设置了什么的重定向) 输入流被称为 ``standard input''; 输出流被称为 ``standard output'';错误流被称为 ``standard error''。

这些名词 通常简写为符号,用于引用这些文件,它们是 stdin, stdout,和 stderr. 这些符号中,每一个都是 stdio(3) 中的一个宏,类型是指向 FILE的指针,可以用于类似 fprintf(3) 或 fread(3) 等函 数中。 由于 FILE 是一个对 Unix 文件描述符加以缓冲的包装,下层的文件也可以使用-始的 Unix 文件接口来存取。也就是,类 似 read(2) 和 lseek(2) 的函数。与流stdin, stdout, 和 stderr 关联的整数形式的文件描述符分别是 0,1 还有2。

预 处理器符号 STDIN_FILENO,STDOUT_FILENO 和 STDERR_FILENO分别以它们为值,定义在 <unistd.h> 中。 注意混合使用 FILE 和-始的文件描述符可能带来不可预料的结果,一般应当避免。 由于符号 stdin, stdout, 和 stderr被指定为宏,为它们赋值将导致不可移植。

利用库函数 freopen(3),标准流可以用 来指向不同的文件。引进这个函数专门用来为 stdin, stdout, 和stderr 重新赋值。标准流在调用 exit(3) 和程序正常 中止时被关闭。 错误流 stderr 是非缓冲的。输出流 stdout是行缓冲的,如果它指向一个终端。不完全的行只有在调用 fflush(3) 或 exit(3),或者打印了新行符之后才会显示。这样可能带来无法预料的结果,尤其是调试输出时。标准流(或任何其他流) 的缓冲模式可以用函数 setbuf(3) 或 setVB uf(3)来切换。注意当 stdin 与一个终端关联时,也许终端驱动中存在输入 缓冲,与stdio 缓冲完全无关。(确实如此,一般的终端输入在内核中是行缓冲的。) 内核对输入的控制可以通过对 tcsetattr(3) 的调用来修改,参见 stty(1), 和termios(3) 。

stdin,stderr,stdout相关推荐

  1. stdin,stdout,stderr

    我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用.说到这不得不提及stdin,stdout,stderr.想想,我们在用C去写文件时的操作,Fil ...

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

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

  3. 详解stdin,stdout,stderr

    我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用.说到这不得不提及stdin,stdout,stderr.想想,我们在用C去写文件时的操作,Fil ...

  4. stdin和stdout用法c语言,C语言中的stdin,stdout,stderr

    我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用.说到这不得不提及stdin,stdout,stderr.想想,我们在用C去写文件时的操作,Fil ...

  5. 详解C语言中的stdin,stdout,stderr

    我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用.说到这不得不提及stdin,stdout,stderr.想想,我们在用C去写文件时的操作,Fil ...

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

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

  7. stderr stdout stdin的区别

    stderr stdout stdin的区别 stdin --标准输入 stdout – 标准输出设备 (printf("-")) 同 stdout. stderr – 标准错误输 ...

  8. stderr/stdout用法

    [unix]标准输出(设备)文件,对应终端的屏幕.进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中.在C中,程序执行时,一直处于开启状态. 与其有关 ...

  9. stdin、stdout

    我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用.说到这不得不提及stdin,stdout,stderr.想想,我们在用C去写文件时的操作,Fil ...

最新文章

  1. 如何提升自己的Web前端技术
  2. 中国智能控制器行业运营分析与竞争趋势展望报告2022-2027年版
  3. AtCoder AGC030E Less Than 3
  4. TeeChart替代品,MFC下好用的高速绘图控件-(Hight-Speed Charting)
  5. QML ListView悬浮标题栏
  6. ABAP Debugging Script(调试器脚本)使用的一些实际例子
  7. 利用VMware Infrastructure SDK编程控制虚拟机集群(3)
  8. 最优化学习笔记(五)——牛顿法(多维数据)
  9. SpringMvc-MockMvc
  10. C++奥赛一本通排序题解
  11. MATLAB聚类分析源代码
  12. userdel: user xxx is currently used by process xxx
  13. mysql got signal 11_轻松解决MYSQL错误mysqld got signal 11 ;
  14. ubuntu php开发工具
  15. Kubernetes切换Docker容器引擎为Containerd
  16. 使用Python将图片变成铅笔素描
  17. vue中,应用mapbox地图——地图组件mapbox-gl和语言包@mapbox/mapbox-gl-language地图英文转中文 accesstokens-访问令牌移动端地图-leaflet
  18. Windows 10 家庭中文版,电脑文件夹背景、Word背景全变成黑色的解决方案
  19. 四川省2021年卫生副高考试成绩查询时间,四川省2021年卫生资格考试成绩查询时间:6月4日起...
  20. 一夜大涨3230亿,苹果市值等于2.5个阿里或16个京东

热门文章

  1. MusicLibrary:一个丰富的音乐播放封装库
  2. 3.2 数值分析: Jacobi与Gauss-Seidel迭代法
  3. 李丽云为什么选择肖志军?
  4. 防雷接地国家规范标准介绍与施工技术要点
  5. FFmpeg源码分析:AVIOContext、IO模型与协议
  6. 女神找我帮忙--图片转成手绘,该不该答应?
  7. 期货投资盈亏比怎么算(期货盈亏怎么算的)
  8. 2020年中国环博会|2020环博会|第21届中国环博会参展商名单(第2批)“加速”出炉!
  9. HTML文件命名_没有删不掉的文件:强制终止、一键解锁,样样精通
  10. [转载]用JBuilder 2005实现重构之认识重构