linux调用系统api出错,如何查看错误原因?

当调用系统api出错后,可以通过打印errno这个变量来获得错误码值,

errno变量定义在/usr/include/errno.h里,

#ifndef errno
extern int errno;
#endif
可以看到这是个全局变量,

当调用系统api出错后,系统会把错误码赋值给errno,那么知道了错误码,怎么知道对应意思呢?

最笨的办法是查看头文件里错误码的说明,

比如查看/usr/include/asm-generic/errno-base.h和/usr/include/asm-generic/errno.h

这个显得麻烦,有个简单的办法是调用

char *strerror(int errnum);

返回错误码对应的描述信息。

或者调用void perror(const char *s);

它会先打印s,再打印错误码描述,注意这些都是输出到stderr上的。

猜你喜欢

转载自blog.csdn.net/yuhengyue/article/details/78795691