以下整理了 Linux 系统中常见的错误代码(errno)及其对应的数值和简要描述。这些错误代码通常由系统调用或库函数返回,用于指示操作失败的原因。
Linux 常见错误代码表(按数值排序)
错误代码名称 | 数值 | 描述 |
EPERM | 1 | 操作不允许(权限不足) |
ENOENT | 2 | 文件或目录不存在 |
ESRCH | 3 | 进程或线程不存在 |
EINTR | 4 | 系统调用被信号中断(可重试) |
EIO | 5 | 输入/输出错误(硬件或低级问题) |
ENXIO | 6 | 设备或地址不存在 |
E2BIG | 7 | 参数列表过长 |
ENOEXEC | 8 | 可执行文件格式错误 |
EBADF | 9 | 文件描述符无效 |
ECHILD | 10 | 子进程不存在或无法操作 |
EAGAIN / EWOULDBLOCK | 11 | 资源暂时不可用(非阻塞模式下重试) |
ENOMEM | 12 | 内存不足 |
EACCES | 13 | 权限被拒绝(访问受限) |
EFAULT | 14 | 指针指向不可访问的内存地址 |
ENOTBLK | 15 | 需要块设备但提供了非块设备 |
EBUSY | 16 | 资源被占用 |
EEXIST | 17 | 文件或目录已存在 |
EXDEV | 18 | 跨设备链接操作无效 |
ENODEV | 19 | 设备不存在或不可用 |
ENOTDIR | 20 | 路径中的某个组件不是目录 |
EISDIR | 21 | 对目录执行了非目录操作(如写入) |
EINVAL | 22 | 参数无效 |
ENFILE | 23 | 系统文件表溢出(超出最大打开文件数) |
EMFILE | 24 | 进程打开文件数已达上限 |
ENOTTY | 25 | 终端操作不适用于非终端设备 |
ETXTBSY | 26 | 尝试写入正在执行的程序 |
EFBIG | 27 | 文件大小超出系统限制 |
ENOSPC | 28 | 设备无剩余空间 |
ESPIPE | 29 | 非法定位操作(如对管道调用 lseek) |
EROFS | 30 | 文件系统只读 |
EMLINK | 31 | 文件链接数超过限制 |
EPIPE | 32 | 管道破裂(写入无读取端的管道) |
EDOM | 33 | 数学函数参数超出定义域 |
ERANGE | 34 | 数学函数结果无法表示 |
EDEADLK | 35 | 资源死锁风险 |
ENAMETOOLONG | 36 | 文件名过长 |
ENOLCK | 37 | 无可用锁资源 |
ENOSYS | 38 | 函数未实现 |
ENOTEMPTY | 39 | 目录非空(无法删除) |
ELOOP | 40 | 符号链接层级过深 |
ECONNREFUSED | 111 | 连接被拒绝(如目标服务未运行) |
ETIMEDOUT | 110 | 操作超时 |
ECONNRESET | 104 | 连接被对端重置 |
说明
- 合并错误代码:某些错误代码共享相同数值但名称不同(如
EAGAIN 和 EWOULDBLOCK),它们通常用于不同上下文但表示相同错误。 - 数值范围:错误代码从 1 开始,数值可能因 Linux 版本或架构略有差异,本表以常见 x86/x86_64 架构为准。
- 更多错误码:可通过
man errno 或查阅 /usr/include/asm-generic/errno*.h 获取完整列表。