perror 和 strerror 区别
来源:互联网 发布:linux保存配置文件 编辑:程序博客网 时间:2024/05/16 15:37
perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno(这里的说法不准确,errno是一个宏,该宏返回左值) 的值来决定要输出的字符串。在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。
strerror函数是通过标准错误的标号,获得错误的描述字符串 ,将单纯的错误标号转为字符串描述,方便用户查找错误。
其次,了解两函数的原型不同:
perror()原型:
#include <stdio.h>
void perror(const char *msg);
它是基于errno的当前值,在标准出错上产生一条出错信息,然后返回。它首先输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值的出错信息,最后是一个换行符。
strerror()原型:
#include <string.h>
char * strerror(int errnum);
此函数将errnum(它通常就说errno值)映射为一个出错信息字符串,并返回此字符串的指针。
最后,两函数的使用具体区别如下:
perror是将errno对应的错误消息的字符串打印到标准错误输出上,即stderr或2上,若你的程序将标准错误输出重定向到/dev/null,那就看不到了,就不能用perror了。而 strerror的作用只是将errno对应的错误消息字符串返回,要怎样处理完全由你自己决定。通常我们选择把错误消息保存到日志文件中,即写文件,所以通常可以用fprintf(fp, "%s", strerror(errno))将错误消息打印到fp指向的文件中。其中perror中errno对应的错误消息集合跟strerror是一样的,也就是说不会漏掉某些错误。
0 0
- perror 和 strerror 区别
- perror 和 strerror 区别
- perror和strerror的区别
- perror 和 strerror 的区别
- perror和strerror的使用和区别
- perror() 和 strerror()
- perror和strerror
- perror和strerror的问题
- 1-6例示strerror和perror
- errno、stderr、perror函数和strerror函数
- errno、stderr、perror函数和strerror函数
- 库函数perror和strerror的使用
- 错误输出函数perror和strerror用法
- APUE 1-8 strerror 和 perror
- errno、stderr、perror函数和strerror函数
- linux下的strerror和perror
- perror和strerror的区别 http://blog.csdn.net/lalor/article/details/7555019
- perror()与strerror()的应用及区别 man手册查询
- Listview更新数据时崩溃The content of the adapter has changed but did not receive a notification.
- 47.top10活跃session之本地测试以及阶段总结
- PTA 数据结构与算法题目集(中文)5-6 列出连通集 (25分)
- 第一章:初学Java
- spring 注解@primary解析
- perror 和 strerror 区别
- 什么是神经网络?
- what is word2vec
- C语言-贪吃蛇
- 【HTML5学习笔记】2:文本元素的使用
- springboot多数据源读写分离和主库数据源service层事务控制
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- swagger使用笔记
- Java实现算法之--求子数组和的最大值