erron是个什么鬼?
errno是一个全局变量,每次只要出现错误,系统就会自动设置这个值,然后用户就可以通过这个值,打印出对应的错误
errno(3) — Linux manual pagehttps://man7.org/linux/man-pages/man3/errno.3.html
#include <errno.h>
$ vim /usr/include/sys/errno.h
$ vim /usr/include/errno.h
```
/* The error code set by various library functions. */
extern int *__errno_location (void) __THROW __attribute_const__;
# define errno (*__errno_location ())
```
$ vim /usr/include/bits/errno.h
$ vim /usr/include/linux/errno.h
$ vim /usr/include/asm/errno.h
$ vim /usr/include/asm-generic/errno.h
$ vim /usr/include/asm-generic/errno-base.h
$ sudo apt install moreutils
$ errno -l
可以查看错误号-l就是list
在errno-base.h头文件中也可以看到宏定义,想不通是为什么不用枚举类型
perror(3) — Linux manual pagehttps://man7.org/linux/man-pages/man3/perror.3.html
#include <stdio.h>
FILE* fptr = fopen("nonexist.txt","r");
if(fptr == NULL)
{
perror("open error:");
exit(1);
}
strerror(3) — Linux manual pagehttps://man7.org/linux/man-pages/man3/strerror.3.html
#include <errno.h>
#include <string.h>
FILE* fptr = fopen("nonexist.txt","r");
if(fptr == NULL)
{
printf("open error:%s\n", strerror(errno));
exit(1);
}