单击“嵌入式大杂烩”,然后单击“确定”。

上面的“星际官方帐户”;首次观看精彩文章!我们大多数人使用printf来打印一些信息,而其他接口则较少使用。

这是我们忘记的打印输出功能:perror功能。

perror函数简介perror用于将先前函数中的错误原因输出到标准设备(stderr)。

参数s指向的字符串将首先打印出来,然后是错误原因字符串。

该错误的原因根据全局变量errno的值确定要输出的字符串。

库函数中有一个errno变量,每个errno值对应于一个字符串表示的错误类型。

当您称“一些”时,函数出错,该函数已重置errno的值。

perror函数仅输出您输入的一些信息以及对应于errno的错误。

让我们来看一个使用printf和perror的区别的示例:(1)使用printf的示例:#includeint main(void){FILE * fp; fp = fopen(“ / home / book / test_file”,“ r +”); if(NULL == fp)printf(“打开错误! ");}}返回0;}目前,我们的本地/ home / book /路径中没有test_file文件,并且编译和运行将输出错误消息:(2)使用perror的示例:#include# include#includeint main(void){文件FILE * fp; fp = fopen(“ / home / book / test_file”,“ r +”);如果(NULL == fp)perror(“打开错误”);与上面的返回相同,编译};跑。

此时,将输出一条错误消息:如您所见,使用perror可以输出更多详细信息。

如前所述,错误的原因是基于全局变量errno的。

换句话说,一些全局变量errno保存了一些错误代码。

我们可以看到,在一些相对系统的代码/项目中,经常设计一些错误代码来促进统一管理。

在Linux内核(我的内核版本为4.9.88)中,这些系统错误代码在文​​件include / uapi /中的asm-generic / errno-base.h和include / uapi / asm-generic / errno.h中:这些错误代码后跟一些描述性注释。

这些描述不仅用作注释,而且使用这些错误代码一一建立。

相应的字符串输出关系,例如:这就是为什么上面的示例中没有这样的文件或目录的输出可用的原因。

另外,我们也可以通过errno工具查询这些错误代码和描述,而不是读取代码。

我们可以输入errno命令来查看是否有errno工具,如果没有,它将提示安装:使用errno -l命令查看系统错误代码和描述:以上是这次的共享,如果有的话是一个错误,请指出!谢谢您猜您喜欢它从串行端口驱动程序到Linux驱动程序模型,您对串行端口打印了解多少?释放1024G嵌入式资源!包括但不限于C / C ++,MCU,Linux等。

在官方帐户聊天界面上回复1024,您可以免费获得它!免责声明:本文的内容经21ic授权后发布,版权归原作者所有。

该平台仅提供信息存储服务。

本文仅代表作者的个人观点,不代表该平台的立场。

如有任何疑问,请与我们联系,谢谢!