一个不该被遗忘的打印接口
我们大多都使用printf来打印一些信息,其它的接口都比较少用。这里介绍一个被我们遗忘的打印输出函数: perror函数 。perror函数简介
perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno的值来决定要输出的字符串。
在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和errno所对应的错误一起输出。
下面通过例子看一下使用printf与使用perror的区别:
(1)使用printf的例子:/* 公众号:嵌入式大杂烩 */ #include int main(void) { FILE *fp; fp = fopen("/home/book/test_file", "r+"); if (NULL == fp) { printf("fopen error! "); } return 0; }
此时,我们本地的/home/book/路径下并没有test_file文件,编译运行就会输出错误信息:(2)使用perror的例子:/* 公众号:嵌入式大杂烩 */ #include #include #include int main(void) { FILE *fp; fp = fopen("/home/book/test_file","r+"); if (NULL == fp) { perror("fopen error"); } return 0; }
同上,编译运行。此时会输出错误信息:
可以看到,使用perror能多输出点详细信息。
前面说了,错误原因依照全局变量errno中。换句话说就是一些全局变量errno保存的就是一些错误代码。我们可以看到在一些比较系统的代码/工程中,常常会设计一些错误代码,方便统一管理。
在Linux内核(我这里的内核版本是4.9.88)中,这些系统错误代码在文件 include/uapi/asm-generic/errno-base.h 及 include/uapi/asm-generic/errno.h 中:
这些错误代码后面有一些描述注释,这些描述也不仅仅是作为注释使用,也有与这些错误代码建立一一对应的字符串输出关系,比如:
所以才有了上例的No such file or directory 的输出。
除此之外,我们也可以不去阅读代码,而是通过 errno 工具来查询这些错误代码及描述。
我们可以输入errno 命令看看有没有errno工具,如果没有,则会提示安装:
使用errno -l 命令查看系统错误代码及描述:
以上就是本次的分享,如有错误,欢迎指出!谢谢
1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。私信回复 1024,即可免费获取!
日本的网购发达吗?不要再提什么网购不网购,什么网络支付,中国人均gdp,喝日本不能比,医疗,住房教育离日本也有很大的差距,人口素质耿没得比,当今中国,大部分中国人已经沉浸在网络支付第一,网购第一的自
柳传志真的有问题吗?张捷爆了三十多期的料,司马南也揭了他几十期的老底,你觉得这两人有问题老柳不会报案,不会发法院传票票!别看似风平浪静,一但掀起风浪来就是暴风雨。张捷司马南两人一敲一打之间,如果是你,
怎样利用微信小程序把客户资源变现?小程序在短短几年里突飞猛进,微信支付宝头条抖音等大平台都相继推出自己的小程序,以微信为例,基于微信庞大的用户群体,加上小程序即用即走轻量化的特性,备受用户喜欢与商家的追捧,据统计,
用EasyRecovery恢复手残误删的文件相信很多人都有过这样的经历,各种课程设计论文报告众多,老师提出了一遍又一遍的修改意见,文件版本众多,一旦不小心误删除了文件,只能眼睁睁的看着自己辛辛苦苦编写的文件消失在电脑中,一切
iPhone14Pro渲染图出炉,小刘海终于被砍掉,外观设计太有感觉文Dong审核子扬校对知秋2021年9月份,苹果正式推出的秋季新品iPhone13系列凭借着接地气的价格得到了一众果粉们的追捧与青睐,切实让消费者们感受到了13香。基于iPhone
华为鸿蒙发布,为何国内还没有其他手机厂商采用,谈谈您的看法?我想有以下几种原因1,国内手机厂认为鸿蒙还不成熟,比如小米,OPPO等厂商都追求的是利润,他们害怕一旦鸿蒙出现闪失,影响他们手机的销售。2,小米,OPPO等厂商都是用高通骁龙芯片,
情歌王子张信哲,被实名举报,你感觉震惊吗?昨天,我看到热搜有人实名举报张信哲为赌博平台代言,我感到相当震惊!。不过,这些我早已习以为常,只能说天下之大无奇不有,每天都有各种乱七八糟的事情在发生或正在发生。当然,具体情况还要
为什么那么多人骂华为?美国以举国之力打击华为,他们的举国之力当然也包括舆论控制,这是其一另外一方面就是华为对友商合作伙伴的压力实在太大了,根本没有办法和华为直接竞争,人家骂一骂出口气也可以理解。另外还有
雷军RedmiK50明年确定2月,MIUI13与天玑9000,上亿像素配置香大家应该知道,小米旗下有款红米手机非常受到大家欢迎,无论从颜值还是从出色的硬件性能和产品高性价比,非常受市场欢迎。对雷军来说,红米手机作为小米公司旗下的子品牌,重要程度不言而喻,小
中国移动又有新动作发布算力网络白皮书倡议共创数智新未来玩虚拟货币的投资者,相信都听过算力这个词,在区块链中算力一般是指比特币挖矿机的算力,是你的挖矿机器在计算及网络处理能力方面的度量,算力就是挖矿机挖出比特币的能力,你的算力占全网算力
中国人保财险成功签出新能源汽车保险保单12月27日0时,中国人保财险顺利签出新能源汽车保险保单,成为行业首批使用新条款承保新能源汽车保险业务的公司之一。新能源汽车保险是财险行业的一项产品创新。中国人保财险第一时间切换产