C/C++三个标准设备文件句柄

本文详细介绍了C/C++中的三个标准宏:stdout(标准输出)、stdin(标准输入)和stderr(标准错误)。解释了这些宏如何与设备句柄相关联,以及它们在不同操作系统中的工作原理。特别关注了stdout和stderr之间的区别,以及如何使用perror来处理错误输出。

在c/c++中定义了三个标准宏:

 

stdout(Standardoutput)标准输出
stdin(Standardinput)标准输入
stderr(Standarderror)标准错误

这些宏分别对应不同的设备句柄

stdout对应的是屏幕,一般来说指的是终端窗口上的显示文字信息的屏幕!

stdin对应的是输入缓冲区

stderr和stdout对应的是一样的,这个宏是给perror使用的,这里就顺便补充一下printf与perror的区别在于哪儿吧!

printf会将字符先写入输入缓冲区,在输出到stdut上,而perror是直接输入到stderr上,也就是说略过这个过程,要知道输出缓冲区当屏幕爆满时会自动清除,这个是由操作系统来完成的,而输入缓冲区的是根据栈大小来的,一旦超出栈大小范围就会被操作系统卡嚓掉!

并且stdin.h头文件里还定义了error变量,当我们调用标准c库函数时出了错误,一般此变量会被设置,具体可以查看相关文档对一些函数的错误码介绍,就像c++里的异常流一样!try~

具体点来说当我们对stdout文件句柄进行操作时其实c语言就知道我们是想把数据输出到屏幕上,所以就会内部调用相关内核函数来输出,具体是由操作系统来完成的包括printf!

就像linux下malloc内部调用的是brk/sbrk函数一样,而windows内部则调用的是HeapAlloc一样,毕竟内存在MMU进行虚拟地址映射以后内存的管理就交给操作系统了,操作系统通过总线与MMU交互来分配内存,所以根据不同的系统平台会提供不同的接口~

比如printf是将字符输出到终端或dos界面上,在windows下是输出到dos界面上,即内部调用的是windows操控dos系统上的api,我们的标准c语言程序均运行的dos系统之上,而linux下则是通过shell直接输出到终端界面上~,内部调用的据博主推测应该是shell上的echo脚本命令,所以linux下是shell,而在运行shell的就是终端程序!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值