C 标准库 - <errno.h>学习笔记
简介
<errno.h>
是 C 标准库中的一个头文件,定义了一个全局变量 errno
,以及一些宏,用于表示函数返回值的错误码。
在程序执行过程中,如果某个系统函数发生了错误,可以通过检查 errno
的值来判断错误类型,并采取相应的处理措施。
错误码
以下是 <errno.h>
中定义的一些错误码:
错误码 | 描述 |
---|---|
EACCES |
权限不足 |
EAGAIN |
资源暂时不可用 |
EBUSY |
设备或资源忙 |
EFAULT |
无效的内存地址 |
EINVAL |
无效参数 |
ENFILE |
打开文件过多 |
ENOENT |
文件或目录不存在 |
ENOMEM |
内存不足 |
ENOSPC |
磁盘空间不足 |
EPERM |
操作不允许 |
示例
下面是一个简单的示例程序,演示了如何使用 errno
和相关的宏:
Copy Code#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main()
{
FILE* fp = fopen("nonexistent_file.txt", "r");
if(fp == NULL) {
printf("打开文件失败,错误码:%d\n", errno);
if(errno == ENOENT) {
printf("文件不存在\n");
}
} else {
printf("打开文件成功\n");
fclose(fp);
}
return 0;
}
在这个示例程序中,我们试图打开一个名为 nonexistent_file.txt
的文件,但这个文件并不存在。因此,fopen()
函数会返回一个空指针,并且把错误码设置为 ENOENT
(文件不存在)。
程序会检查 errno
的值,如果是 ENOENT
,就说明文件不存在,程序会相应地输出一条提示信息。
注意,因为 errno
是一个全局变量,它的值可能被其他函数修改,所以我们需要在每次使用之前都进行检查,以确保它的值是我们期望的。