9672

48 分钟

#errno.h

这个头文件提供 报告错误情况 的相关功能,它定义了一个全局变量 errno(错误编号)和一些标准的错误代码宏。 发生错误时可以通过读取 errno 获知错误,通过 string.h 中的 strerror 函数可以获得可读的错误说明。 同 stdio 中的 perror 函数可以便捷的打印错误说明。

示例:

#include <stdio.h> #include <errno.h> // errno #include <string.h> // strerror int main() { FILE *fp = NULL; // 尝试打开一个不存在的文件 fp = fopen("nonexistent_file.txt", "r"); if (fp == NULL) { // 使用 errno 获取错误代码 printf("打开文件失败,错误代码: %d\n", errno); // 检查特定错误类型 if (errno == ENOENT) { printf("特定错误: 文件不存在(ENOENT)\n"); } // 使用 strerror 获取错误说明 printf("错误说明: %s\n", strerror(errno)); // 使用 perror 便捷打印错误说明,和上一行代码基本等价 perror("错误说明"); // 返回失败 return 1; } // 文件操作... // 关闭文件 fclose(fp); printf("文件操作成功完成\n"); return 0; }

运行结果:

打开文件失败,错误代码: 2
特定错误: 文件不存在(ENOENT)
错误说明: No such file or directory
错误说明: No such file or directory

#

标准说明
errnoC89POSIX 兼容的线程局部错误号

#错误编号

注意:

  1. 错误码在不同环境中可能有不同的具体数值

  2. 并非所有系统都支持表中的全部错误码

  3. 不同环境可能定义有表中不包含的其它错误码

错误编号宏标准说明
EDOMC89数学函数的参数超过定义域范围
EILSEQC95非法字节序列
ERANGEC89数据超出范围
E2BIGPOSIX参数列表太长
EACCESPOSIX权限不足
EADDRINUSEPOSIX地址已被使用
EADDRNOTAVAILPOSIX地址不可用
EAFNOSUPPORTPOSIX地址族不支持
EAGAINPOSIX资源暂时不可用(通常等同于 EWOULDBLOCK
EALREADYPOSIX连接已在进行中
EBADFPOSIX错误的文件描述符
EBADMSGPOSIX错误的消息
EBUSYPOSIX设备或资源忙
ECANCELEDPOSIX操作已取消
ECHILDPOSIX无子进程
ECONNABORTEDPOSIX连接中止
ECONNREFUSEDPOSIX连接被拒绝
ECONNRESETPOSIX连接被重置
EDEADLKPOSIX资源死锁
EDESTADDRREQPOSIX需要目标地址
EDQUOTPOSIX磁盘配额超出
EEXISTPOSIX文件已存在
EFAULTPOSIX错误的地址
EFBIGPOSIX文件太大
EHOSTUNREACHPOSIX主机不可达
EIDRMPOSIX标识符已移除
EINPROGRESSPOSIX操作正在进行
EINTRPOSIX系统调用被中断
EINVALPOSIX无效参数
EIOPOSIX输入/输出错误
EISCONNPOSIX套接字已连接
EISDIRPOSIX是一个目录
ELOOPPOSIX符号链接层数过多
EMFILEPOSIX打开文件太多
EMLINKPOSIX链接太多
EMSGSIZEPOSIX消息太长
EMULTIHOPPOSIX需要多跳
ENAMETOOLONGPOSIX文件名太长
ENETDOWNPOSIX网络已关闭
ENETRESETPOSIX网络被重置
ENETUNREACHPOSIX网络不可达
ENFILEPOSIX系统打开文件太多
ENOBUFSPOSIX无缓冲区空间
ENODATAPOSIX无可用数据
ENODEVPOSIX无此设备
ENOENTPOSIX无此文件或目录
ENOEXECPOSIX执行格式错误
ENOLCKPOSIX无可用锁
ENOLINKPOSIX链接已断开
ENOMEMPOSIX内存不足
ENOMSGPOSIX无此消息
ENOPROTOOPTPOSIX协议选项不可用
ENOSPCPOSIX设备无剩余空间
ENOSRPOSIX无流资源
ENOSTRPOSIX不是流
ENOSYSPOSIX功能未实现
ENOTCONNPOSIX传输端点未连接
ENOTDIRPOSIX不是目录
ENOTEMPTYPOSIX目录非空
ENOTSOCKPOSIX不是套接字
ENOTSUPPOSIX不支持的操作
ENOTTYPOSIX不适当的I/O控制操作
ENXIOPOSIX无此设备或地址
EOPNOTSUPPPOSIX操作不支持
EOVERFLOWPOSIX值太大无法存储
EPERMPOSIX操作不允许
EPIPEPOSIX管道破裂
EPROTOPOSIX协议错误
EPROTONOSUPPORTPOSIX协议不支持
EPROTOTYPEPOSIX协议类型错误
EROFSPOSIX只读文件系统
ESPIPEPOSIX非法寻址
ESRCHPOSIX无此进程
ESTALEPOSIX句柄失效
ETIMEPOSIX流式I/O超时
ETIMEDOUTPOSIX连接超时
ETXTBSYPOSIX文本文件忙
EWOULDBLOCKPOSIX操作会阻塞(通常等同于 EAGAIN
EXDEVPOSIX跨设备链接

创建于 2025/6/1

更新于 2025/6/5