Linux 错误返回列表

C NameValueDescription含义
Success0Success成功
EPERM1Operation not permitted操作不允许
ENOENT2No such file or directory没有这样的文件或目录
ESRCH3No such process没有这样的过程
EINTR4Interrupted system call系统调用被中断
EIO5I/O errorI/O错误
ENXIO6No such device or address没有这样的设备或地址
E2BIG7Arg list too long参数列表太长
ENOEXEC8Exec format error执行格式错误
EBADF9Bad file number坏的文件描述符
ECHILD10No child processes没有子进程
EAGAIN11Try again资源暂时不可用
ENOMEM12Out of memory内存溢出
EACCES13Permission denied拒绝许可
EFAULT14Bad address错误的地址
ENOTBLK15Block device required块设备请求
EBUSY16Device or resource busy设备或资源忙
EEXIST17File exists文件存在
EXDEV18Cross-device link无效的交叉链接
ENODEV19No such device设备不存在
ENOTDIR20Not a directory不是一个目录
EISDIR21Is a directory是一个目录
EINVAL22Invalid argument无效的参数
ENFILE23File table overflow打开太多的文件系统
EMFILE24Too many open files打开的文件过多
ENOTTY25Not a tty device不是tty设备
ETXTBSY26Text file busy文本文件忙
EFBIG 27Filetoo large文件太大
ENOSPC28No space left on device设备上没有空间
ESPIPE29Illegal seek非法移位
EROFS30Read-only file system只读文件系统
EMLINK31Too many links太多的链接
EPIPE32Broken pipe管道破裂
EDOM33Math argument out of domain数值结果超出范围
ERANGE34Math result not representable数值结果不具代表性
EDEADLK35Resource deadlock would occur资源死锁错误
ENAMETOOLONG36Filename too long文件名太长
ENOLCK37No record locks available没有可用锁
ENOSYS38Function not implemented功能没有实现
ENOTEMPTY39Directory not empty目录不空
ELOOP40Too many symbolic links encountered符号链接层次太多
EWOULDBLOCK41Same as EAGAIN和EAGAIN一样
ENOMSG42No message of desired type没有期望类型的消息
EIDRM43Identifier removed标识符删除
ECHRNG44Channel number out of range频道数目超出范围
EL2NSYNC45Level 2 not synchronized2级不同步
EL3HLT46Level 3 halted3级中断
EL3RST47Level 3 reset3级复位
ELNRNG48Link number out of range链接数超出范围
EUNATCH49Protocol driver not attached协议驱动程序没有连接
ENOCSI50No CSI structure available没有可用CSI结构
EL2HLT51Level 2 halted2级中断
EBADE52Invalid exchange无效的交换
EBADR53Invalid request descriptor请求描述符无效
EXFULL54Exchange full交换全
ENOANO55No anode没有阳极
EBADRQC56Invalid request code无效的请求代码
EBADSLT57Invalid slot无效的槽
EDEADLOCK58Same as EDEADLK和EDEADLK一样
EBFONT59Bad font file format错误的字体文件格式
ENOSTR60Device not a stream设备不是字符流
ENODATA61No data available无可用数据
ETIME62Timer expired计时器过期
ENOSR63Out of streams resources流资源溢出
ENONET64Machine is not on the network机器不上网
ENOPKG65Package not installed没有安装软件包
EREMOTE66Object is remote对象是远程的
ENOLINK67Link has been severed联系被切断
EADV68Advertise error广播的错误
ESRMNT69Srmount error srmount错误
ECOMM70Communication error on send发送时的通讯错误
EPROTO71Protocol error协议错误
EMULTIHOP72Multihop attempted多跳尝试
EDOTDOT73RFS specific errorRFS特定的错误
EBADMSG74Not a data message非数据消息
EOVERFLOW75Value too large for defined data type值太大,对于定义数据类型
ENOTUNIQ76Name not unique on network名不是唯一的网络
EBADFD77File descriptor in bad state文件描述符在坏状态
EREMCHG78Remote address changed远程地址改变了
ELIBACC79Cannot access a needed shared library无法访问必要的共享库
ELIBBAD80Accessing a corrupted shared library访问损坏的共享库
ELIBSCN81A .lib section in an .out is corrupted库段. out损坏
ELIBMAX82Linking in too many shared libraries试图链接太多的共享库
ELIBEXEC83Cannot exec a shared library directly不能直接执行一个共享库
EILSEQ84Illegal byte sequence无效的或不完整的多字节或宽字符
ERESTART85Interrupted system call should be restarted应该重新启动中断的系统调用
ESTRPIPE86Streams pipe error流管错误
EUSERS87Too many users用户太多
ENOTSOCK88Socket operation on non-socket套接字操作在非套接字上
EDESTADDRREQ89Destination address required需要目标地址
EMSGSIZE90Message too long消息太长
EPROTOTYPE91Protocol wrong type for socket socket协议类型错误
ENOPROTOOPT92Protocol not available协议不可用
EPROTONOSUPPORT93Protocol not supported不支持的协议
ESOCKTNOSUPPORT94Socket type not supported套接字类型不受支持
EOPNOTSUPP95Operation not supported on transport不支持的操作
EPFNOSUPPORT96Protocol family not supported不支持的协议族
EAFNOSUPPORT97Address family not supported by protocol协议不支持的地址
EADDRINUSE98Address already in use地址已在使用
EADDRNOTAVAIL99Cannot assign requested address无法分配请求的地址
ENETDOWN100Network is down网络瘫痪
ENETUNREACH101Network is unreachable网络不可达
ENETRESET102Network dropped网络连接丢失
ECONNABORTED103Software caused connection软件导致连接中断
ECONNRESET104Connection reset by连接被重置
ENOBUFS105No buffer space available没有可用的缓冲空间
EISCONN106Transport endpoint传输端点已经连接
ENOTCONN107Transport endpoint传输终点没有连接
ESHUTDOWN108Cannot send after transport传输后无法发送
ETOOMANYREFS109Too many references太多的参考
ETIMEDOUT110Connection timed连接超时
ECONNREFUSED111Connection refused拒绝连接
EHOSTDOWN112Host is down主机已关闭
EHOSTUNREACH113No route to host没有主机的路由
EALREADY114Operation already已运行
EINPROGRESS115Operation now in正在运行
ESTALE116Stale NFS file handle陈旧的NFS文件句柄
EUCLEAN117Structure needs cleaning结构需要清洗
ENOTNAM118Not a XENIX-named不是XENIX命名的
ENAVAIL119No XENIX semaphores没有XENIX信号量
EISNAM120Is a named type file是一个命名的文件类型
EREMOTEIO121Remote I/O error远程输入/输出错误
EDQUOT122Quota exceeded超出磁盘配额
ENOMEDIUM123No medium found没有磁盘被发现
EMEDIUMTYPE124Wrong medium type错误的媒体类型
ECANCELED125Operation Canceled取消操作
ENOKEY126Required key not available所需键不可用
EKEYEXPIRED127Key has expired关键已过期
EKEYREVOKED128Key has been revoked关键被撤销
EKEYREJECTED129Key was rejected by service关键被拒绝服务
EOWNERDEAD130Owner died所有者死亡
ENOTRECOVERABLE131State not recoverable状态不可恢复
ERFKILL132Operation not possible due to RF-kill由于RF-kill而无法操作
HWPOISON133Memory page has hardware error分页硬件错误

参考文档

  1. /usr/include/asm-generic/errno-base.h
  2. /usr/include/asm-generic/errno.h
<think>我们正在处理用户关于Linux系统常见错误代码和类型的查询。根据用户需求,我们需要列出并解释一些常见的Linux错误代码(通常定义在<errno.h>中)。这些错误代码在系统编程和调试中非常重要。 根据引用[2]提供的错误列表,我们可以提取部分常见错误码进行解释。同时,结合一般知识,补充其他常见错误码。注意:错误码的具体数值可能因系统而异,但符号名称(如EPERM)是标准的。我们以常见的Linux系统(如Ubuntu)为例。常见错误代码及其解释: 1. **EPERM (1)- Operationnot permitted**试图执行需要特权的操作,但当前用户没有足够的权限。例如,普通用户修改系统文件。2.**ENOENT(2) -No suchfile ordirectory**文件或目录不存在。可能是路径错误,或文件已被删除。3.**ESRCH(3) -No suchprocess**指定的进程不存在。例如,向不存在的进程发送信号。4.**EINTR(4) -Interruptedsystem call**系统调用被信号中断。通常可以重新启动被中断的系统调用。5.**EIO (5)- Input/output error**输入输出错误。通常发生在硬件读写错误,如磁盘故障。 6. **ENXIO (6)- Nosuch deviceor address**设备不存在或地址错误。例如,访问一个不存在的设备文件。 7. **E2BIG(7) -Argument listtoo long**参数列表过长。在执行程序时,传递的参数(包括环境变量)超过系统限制。8.**ENOEXEC (8)- Execformat error**可执行文件格式错误。文件头无法识别,可能文件损坏或不是可执行文件。 9. **EBADF (9)- Badfile descriptor**无效的文件描述符。可能是文件描述符未打开,或已经关闭。10.**ECHILD (10)- Nochild processes**没有子进程。例如,调用`wait`但当前进程没有子进程。 11. **EAGAIN (11)- Resourcetemporarily unavailable**资源暂时不可用。在非阻塞操作中,如果操作会阻塞则返回错误。通常可以重试。 12. **ENOMEM (12)- Cannotallocate memory**内存不足。系统无法分配所需的内存。 13. **EACCES (13)- Permissiondenied**权限不足。尝试访问没有权限的资源(文件、套接字等)。14.**EFAULT(14) -Bad address**错误的地址。传递的指针参数指向了进程无法访问的地址空间。 15. **EBUSY (16)- Deviceor resourcebusy**设备或资源忙。例如,尝试卸载一个正在使用的文件系统。 16. **EEXIST (17)- Fileexists**文件已存在。例如,创建已存在的文件(在不允许覆盖的情况下)。17.**ENOTDIR(20) -Not adirectory**不是目录。在需要目录的地方使用了非目录的文件。18.**EISDIR(21) -Is adirectory**是一个目录。尝试将目录作为普通文件操作(如写入)。19.**EINVAL(22) -Invalid argument**无效的参数。传递给系统调用的参数无效(例如,不支持的选项)。20.**ENFILE (23)- Toomany openfiles insystem**系统打开的文件过多。系统级别的文件描述符耗尽。21.**EMFILE (24)- Toomany openfiles**进程打开的文件过多。单个进程的文件描述符达到限制。 22. **EFBIG (27)- Filetoo large**文件过大。尝试创建超过系统限制的文件。 23. **ENOSPC (28)- Nospace lefton device**设备空间不足。磁盘或分区已满。 24. **EROFS(30) -Read-onlyfile system**只读文件系统。尝试在只读文件系统上写入。 25. **EMLINK (31)- Toomany links**链接过多。尝试创建超过文件系统允许的硬链接数。26.**EPIPE (32)- Brokenpipe**管道破裂。向没有读取端的管道写入数据。27.**EDOM (33)- Mathargument outof domainof function**数学参数超出函数定义域。例如,对负数求平方根。28.**ERANGE (34)- Mathresult notrepresentable**数学结果无法表示。例如,数值溢出。 29. **EDEADLK(35) -Resource deadlock avoided**避免死锁。系统检测到可能发生死锁而避免执行操作。30.**ENAMETOOLONG(36) -File nametoo long**文件名过长。超过文件系统允许的最大长度。 以上是部分常见的Linux错误代码。在编程中,我们可以通过`perror`函数或`strerror`函数将错误码转换为可读的字符串。在命令行中,可以使用`errno`命令(如果已安装)来查询错误码的含义。例如:```bash$errno2ENOENT2No suchfile ordirectory``` 或者使用`perror`(需要安装MySQL客户端库,但通常系统自带): ```bash$ perror13OSerror code13:Permission denied```另外,在C程序中,可以使用`strerror`函数:```c#include<string.h>char *error_str= strerror(errno);``` 引用[2]提供了部分错误码的列表,我们可以参考。但要注意,错误码的数量和具体值可能因系统版本而异。§§相关问题§§1.如何查看Linux系统中完整的错误代码列表?2.在C语言中如何处理系统调用返回错误?3.如何修改进程的文件描述符限制?4.常见的文件权限错误(EACCES)有哪些解决方法? 5.如何调试“设备或资源忙”(EBUSY)错误?</think>### Linux 系统常见错误代码解释 Linux 系统错误代码(通常定义在 `<errno.h>` 头文件中)是系统调用失败时返回的标准错误标识。以下是常见错误代码及其解释: 1. **EPERM (1) - 操作不允许** 尝试执行需要特权的操作(如修改系统文件),但当前用户权限不足[^2]。 2. **ENOENT (2) - 文件或目录不存在** 访问不存在的路径(如 `open("non_exist.txt")`)或拼写错误[^2]。 3. **EIO (5) - 输入/输出错误** 底层硬件读写失败(如磁盘损坏、USB 设备异常断开)[^2]。 4. **ENOMEM (12) - 内存不足** 系统或进程无法分配所需内存(常见于大型程序或内存泄漏)[^2]。 5. **EACCES (13) - 权限不足** 用户无权访问资源(如普通用户修改 `/etc` 文件)[^2][^3]。 6. **EBUSY (16) - 设备或资源忙** 资源被占用(如卸载正在使用的磁盘分区)[^2]。 7. **EEXIST (17) - 文件已存在** 尝试创建已存在的文件(如 `mkdir` 重复目录)[^2]。 8. **ENOTDIR (20) - 非目录** 将文件误认为目录(如 `cd /etc/passwd`)[^2]。 9. **EINVAL (22) - 无效参数** 系统调用参数错误(如传递非法指针或数值)[^2]。 10. **ENOSPC (28) - 设备空间不足** 磁盘写满或 inode 耗尽(常见于日志文件暴增)[^2]。 11. **EROFS (30) - 只读文件系统** 尝试写入只读介质(如修改光盘内容或 `chattr +i` 文件)[^2]。 12. **EPIPE (32) - 管道破裂** 进程间通信异常(如向已关闭的管道写数据)[^2]。 13. **ENAMETOOLONG (36) - 文件名过长** 路径超过 `PATH_MAX` 限制(通常 4096 字节)[^2]。 --- ### 调试技巧 - **查看错误描述**: ```bash errno 13 # 显示 EACCES 的详细描述 ``` - **C 语言获取错误**: ```c #include <errno.h> printf("Error: %s\n", strerror(errno)); ``` - **日志分析**: 检查 `/var/log/syslog` 或 `journalctl -xe` 获取上下文信息[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值