当调用系统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上的。