在C++中,如果调用了库函数,可以通过函数的返回值判断调用是否成功。其实还有一个整型的全局变量errno,存放了函数调用过程中产生的错误代码。
如果调用库函数失败,可以通过errno的值来查找原因
#include <errno.h>
strerror()库函数(在<string.h>中声明)
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()库函数
在<stdio.h>中声明,用于在控制台显示最近一次系统错误消息
void perror(const char*s);
调用库函数不一定设置errno,errno不能作为调用库函数失败的标准
推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/3Zqhgt