Linux 错误代码
Linux 错误代码
Linux 错误代码是在工作或使用程序时系统发生错误时显示的代码。可以借助错误代码识别错误。错误代码帮助我们识别错误的来源。
如果我们在 Linux 系统上工作,很明显我们可能会遇到错误。有些错误可能很小,可能不会导致程序中断。但是可能会出现一些错误,导致系统或程序停止响应。这些错误可能导致数据丢失或可能阻止程序完成。大多数错误以代码或消息的形式显示。
在本节中,我们将看到 C 编程中的错误以及 Linux 系统。
C 编程中的 Linux 错误
熟练的程序员应该知道如何处理这些错误。 C 编程语言不提供对错误处理的直接支持。我们必须检测错误的来源并进行处理。在 C 语言中,返回值显示失败或成功。如果 C 程序中的某个函数失败,我们必须相应地处理错误;否则,它会将错误最后记录在日志文件中。
在执行 C 程序时,我们可能会注意到一些错误编号,例如"错误编号: 17"。在这里,错误号 17 表示文件已经存在。每个错误编号都有一定的含义。
C 语言支持一个变量'errorno。'通过使用这个错误号变量,我们可以使用一些错误处理函数来正确处理它。
要使用外部变量错误号,我们必须包含一个头文件'errno.h.'。
头文件用于定义 'errno' 变量。 errno 变量由发生错误时的系统调用和库函数设置。 C编程语言中有两个重要的函数来处理错误; perror 和 strerror。 perror 函数用于打印错误描述,sterror 函数返回一个包含错误代码的字符串。
让我们使用 errno 来显示错误代码列表。
Linux errno
errno 实用程序用于查找 errno 代码、宏名称和相应的描述。例如,如果我们在 Linux 系统上提供 ENOENT,它将显示代码 2 和描述 "没有这样的文件或目录"。如果我们提供代码 2,那么它将显示 ENOENT 及其描述。
如果我们的机器上没有安装 errno 实用程序,它将显示如下错误:
要安装它,请执行以下命令:
sudo apt install moreutils
通过执行上面的命令,moreutils 包安装在我们的机器上,其中包含 errno 实用程序。
显示错误代码列表
要显示错误代码列表,执行如下命令:
以上命令将显示 RedHat 的错误代码列表。考虑以下输出:
显示一个错误编号
要显示特定错误编号的信息,请执行以下命令:
以上命令将显示错误编号 2 的描述。考虑以下输出:
显示错误名称的信息
要显示特定错误名称的信息,请执行 errno 命令,后跟错误名称。例如要显示错误名称'ESRCH'的信息,执行如下命令:
以上命令将显示指定错误名称的信息。考虑以下输出:
使用字符串显示错误
要使用描述中的字符串显示错误描述,请执行如下命令:
以上命令将显示描述包含字符串权限的错误。考虑以下输出:
Linux 系统错误列表
以下是部分Linux系统可能的错误列表:
| 错误代码 |
错误号 |
说明 |
| EPERM |
1 |
如果不允许操作则显示。 |
| ENOENT |
2 |
不存在该文件或目录时显示。 |
| ESRCH |
3 |
如果不存在该进程则显示。 |
| EINTR |
4 |
显示中断的系统调用 |
| EIO |
5 |
输入/输出错误显示。 |
| ENXIO |
6 |
如果不存在这样的设备或地址,则显示。 |
| E2BIG |
7 |
参数列表过长时显示。 |
| ENOEXEC |
8 |
执行格式错误时显示 |
| EBADF |
9 |
文件描述符错误时显示。 |
| ECHILD |
10 |
如果不存在子进程则显示。 |
| EAGAIN |
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 |
如果设备的ioctl不合适会显示。 |
| ETXTBSY |
26 |
文本文件忙时显示。 |
| EFBIG |
27 |
文件过大显示。 |
| ENOSPC |
28 |
设备上没有剩余空间时显示。 |
| ESPIPE |
29 |
非法搜索时显示。 |
| EROFS |
30 |
只读文件系统时显示。 |
| EMLINK |
31 |
链接过多时显示。 |
| EPIPE |
32 |
断管时显示。 |
| EDOM |
33 |
数值参数在域外时显示。 |
| ERANGE |
34 |
数值结果超出范围显示。 |
| EDEADLK |
35 |
避免资源死锁显示。 |
| ENAMETOOLONG |
36 |
文件名太长显示。 |
| ENOLCK |
37 |
无锁可用时显示。 |
| ENOSYS |
38 |
函数未实现时显示泰德。 |
| 经济性 |
39 |
目录不为空时显示。 |
| ELOOP |
40 |
符号链接层数过多时显示。 |
| ENOMSG |
42 |
如果没有所需类型的消息,则显示。 |
| EIDRM |
43 |
去掉标识符后显示。 |
| ECHRNG |
44 |
通道号超出范围显示。 |
| EL2NSYNC |
45 |
2级不同步时显示。 |
| EL3HLT |
46 |
Level 3 停止时显示。 |
| EL3RST |
47 |
Level 3 重置时显示。 |
| ELNRNG |
48 |
链接号超出范围显示。 |
| EUNATCH |
49 |
未连接协议驱动时显示。 |
| ENOCSI |
50 |
如果没有可用的CSI结构,则显示。 |
| EL2HLT |
51 |
Level 2 停止时显示。 |
| EBADE |
52 |
无效交换时显示。 |
| EBADR |
53 |
请求描述符无效时显示。 |
| EXFULL |
54 |
兑换满时显示。 |
| 伊诺诺 |
55 |
无阳极时显示。 |
| EBADRQC |
56 |
请求代码无效时显示。 |
| EBADSLT |
57 |
无效槽位显示。 |
| EBFONT |
59 |
字体文件格式错误时显示。 |
| ENOSTR |
60 |
如果设备不是流则显示。 |
| ENODATA |
61 |
无可用数据时显示。 |
| ETIME |
62 |
定时器超时时显示。 |
| ENOSR |
63 |
流资源不足时显示。 |
| ENONET |
64 |
机器不在网络上时显示。 |
| ENOPKG |
65 |
未安装包时显示。 |
| EREMOTE |
66 |
远程对象显示。 |
| ENOLINK |
67 |
如果链接已被切断显示。 |
| EADV |
68 |
显示为广告错误。 |
| ESRMNT |
69 |
显示为Srmount错误。 |
| ECOMM |
70 |
发送时出现通讯错误显示。 |
| EPROTO |
71 |
协议错误显示。 |
| EMULTIHOP |
72 |
显示多跳尝试。 |
| EDOTDOT |
73 |
显示为 RFS 特定错误。 |
| EBADMSG |
74 |
显示错误信息。 |
| EOVERFLOW |
75 |
如果值对于定义的数据类型太大,则显示。 |
| ENOTUNIQ |
76 |
名称在网络上不唯一时显示。 |
| EBADFD |
77 |
文件描述符状态错误时显示。 |
| EREMCHG |
78 |
远程地址改变时显示。 |
| ELIBACC |
79 |
如果我们无法访问所需的共享库,则会显示它。 |
| 伊利巴德 |
80 |
在访问损坏的共享库时显示。 |
| ELIBSCN |
81 |
如果a.out中有.lib段被破坏会显示。 |
| ELIBMAX |
82 |
如果我们试图链接太多共享库,则会显示它。 |
| ELIBEXEC |
83 |
如果不能直接执行共享库会显示。 |
| EILSEQ |
84 |
显示无效或不完整的多字节或宽字符 |
| ERESTART |
85 |
显示通知被中断的系统调用应该重新启动。 |
| ESTRPIPE |
86 |
如果有流管道错误显示。 |
| EUSERS |
87 |
显示给太多用户。 |
| ENOTSOCK |
88 |
非socket上的socket操作时显示。 |
| EDESTADDRREQ |
89 |
需要目的地址时显示。 |
| EMSGSIZE |
90 |
如果消息太长则显示。 |
| EPROTOTYPE |
91 |
socket协议类型错误时显示。 |
| ENOPROTOOPT |
92 |
协议不可用时显示。 |
| EPROTONOS支持 |
93 |
协议不支持时显示。 |
| ESOCKTNOS 支持 |
94 |
不支持Socket类型时显示。 |
| EOPNOTSUPP |
95 |
不支持操作时显示。 |
| EPFNOSUPPORT |
96 |
不支持协议族时显示。 |
| EAFNOSUPPORT |
97 |
协议不支持地址族时显示。 |
| EADDRINUSE |
98 |
如果地址已被使用则显示。 |
| EADDRNOTAVAIL |
99 |
系统无法分配请求地址时显示。 |
| ENETDOWN |
100 |
网络中断时显示。 |
| ENETUNREACH |
101 |
网络不通时显示。 |
| ENETRESET |
102 |
如果网络在重置时断开连接会显示。 |
| ECONNABORTED |
103 |
如果软件导致连接中止显示。 |
| ECONNRESET |
104 |
如果连接被peer重置则显示。 |
| ENOBUFS |
105 |
无可用缓冲空间时显示。 |
| EISCONN |
106 |
如果传输端点已经连接,则显示。 |
| ENOTCONN |
107 |
未连接传输端点时显示。 |
| ESHUTDOWN |
108 |
传输端点关闭后系统无法发送显示。 |
| ETOOMANYREFS |
109 |
引用过多时显示: 无法拼接 |
| ETIMEDOUT |
110 |
连接超时显示。 |
| ECONNREFUSED |
111 |
连接被拒绝时显示。 |
| EHOSTDOWN |
112 |
Host 宕机时显示。 |
| EHOSTUNREACH |
113 |
如果没有到主机的路由显示。 |
| EALREADY |
114 |
如果正在运行则显示。 |
| EINPROGRESS |
115 |
如果操作正在进行中显示。 |
| ESTALE |
116 |
显示为陈旧的文件句柄。 |
| EUCLEAN |
117 |
结构需要清理时显示。 |
| ENOTNAM |
118 |
显示不是 XENIX 命名类型文件。 |
| ENAVAIL |
119 |
如果没有可用的 XENIX 信号量,则显示。 |
| EISNAM |
120 |
如果有命名类型文件则显示。 |
| EREMOTEIO |
121 |
远程I/O错误显示。 |
| EDQUOT |
122 |
超过磁盘配额时显示。 |
| ENOMEDIUM |
123 |
未找到介质时显示。 |
| EMEDIUMTYPE |
124 |
介质类型错误显示。 |
| 取消 |
125 |
取消操作时显示。 |
| ENOKEY |
126 |
如果所需的密钥不可用则显示。 |
| EKEYEXPIRED |
127 |
如果密钥已过期则显示。 |
| EKEYREVOKED |
128 |
如果密钥已被撤销则显示。 |
| EKEYREJECTED |
129 |
密钥被服务拒绝时显示。 |
| EOWNERDEAD |
130 |
所有者死亡时显示。 |
| ENOTRECOVERABLE |
131 |
显示为不可恢复状态。 |
| ERFKILL |
132 |
RF-kill 导致无法操作时显示。 |
| EHWPOISON |
133 |
内存页有硬件错误时显示。 |