在C++中,如果调用了库函数,可以通过函数的返回值判断调用是否成功。其实还有一个整型的全局变量errno,存放了函数调用过程中产生的错误代码。
如果调用库函数失败,可以通过errno的值来查找原因
#include <errno.h>
strerror()库函数(在中声明)
char *strerror(int errnum); //非线程安全 int strerror_r(int errnum,char *buf,size_t buflen); //线程安全
gcc8.3.1版本一共有133个错误代码
举例
#include<iostream> #include<string.h> #include<errno.h> #include<sys/stat.h> using namespace std; int main() { int iret = mkdir("/tmp/aaa",0755); cout<<"iret="<<iret<<endl; cout<<"error="<<strerror(errno)<<endl; }
[root@localhost 06demoerror]# g++ -o demo_error demo_error.cpp [root@localhost 06demoerror]# ./demo_error iret=0 error=Success [root@localhost 06demoerror]# ./demo_error iret=-1 error=File exists
perror()库函数
在中声明,用于在控制台显示最近一次系统错误消息
void perror(const char*s);
调用库函数不一定设置errno,errno不能作为调用库函数失败的标准