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 是一个全局变量,它的值可能被其他函数修改,所以我们需要在每次使用之前都进行检查,以确保它的值是我们期望的。