首先在自己的程序中#include
添加打印errno的语句 printf("errno is: %d\n",errno);
根据errno的值查错。
perror("xxxx");//会将错误信息打印出来,
printf("%m")
printf("%s",strerror(errno)); //这两个也可以将错误码打印出来
linux内核4.9版本中在这两个文件下定义
include/uapi/asm-generic/errno-base.h
include/uapi/asm-generic/errno.h
常用linux错误代码含义,如下表所示:
名称 |
值 |
描述 |
EPERM |
1 |
操作不允许 |
ENOENT |
2 |
无此文件或目录 |
ESRCH |
3 |
无此进程 |
EINTR |
4 |
中断系统调用 |
EIO |
5 |
I/O 错误 |
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 |
Cross-device link |
ENODEV |
19 |
无此设备 |
ENOTDIR |
20 |
不是一个目录文件 |
EISDIR |
21 |
I是一个目录文件 |
EINVAL |
22 |
无效的参数 |
ENFILE |
23 |
文件表溢出 |
EMFILE |
24 |
打开文件过多 |
ENOTTY |
25 |
不是一个TTY设备 |
ETXTBSY |
26 |
文件忙 |
EFBIG |
27 |
文件过大 |
ENOSPC |
28 |
此设备上没有空间了 |
ESPIPE |
29 |
无效的偏移 |
EROFS |
30 |
只读文件系统 |
EMLINK |
31 |
链接过多 |
EPIPE |
32 |
错误的管道 |
EDOM |
33 |
Math argument out of domain |
ERANGE |
34 |
Math result not representable |
EDEADLK |
35 |
Resource deadlock would occur |
ENAMETOOLONG |
36 |
文件名过长 |
ENOLCK |
37 |
No record locks available |
ENOSYS |
38 |
函数没有实现 |
ENOTEMPTY |
39 |
目录非空 |
ELOOP |
40 |
Too many symbolic links encountered |
EWOULDBLOCK |
41 |
Same as EAGAIN |
ENOMSG |
42 |
No message of desired type |
EIDRM |
43 |
Identifier removed |
ECHRNG |
44 |
Channel number out of range |
EL2NSYNC |
45 |
Level 2 not synchronized |
EL3HLT |
46 |
Level 3 halted |
EL3RST |
47 |
Level 3 reset |
ELNRNG |
48 |
Link number out of range |
EUNATCH |
49 |
Protocol driver not attached |
ENOCSI |
50 |
No CSI structure available |
EL2HLT |
51 |
Level 2 halted |
EBADE |
52 |
Invalid exchange |
EBADR |
53 |
Invalid request descriptor |
EXFULL |
54 |
Exchange full |
ENOANO |
55 |
No anode |
EBADRQC |
56 |
Invalid request code |
EBADSLT |
57 |
Invalid slot |
EDEADLOCK |
58 |
Same as EDEADLK |
EBFONT |
59 |
Bad font file format |
ENOSTR |
60 |
Device not a stream |
ENODATA |
61 |
No data available |
ETIME |
62 |
Timer expired |
ENOSR |
63 |
Out of streams resources |
ENONET |
64 |
Machine is not on the network |
ENOPKG |
65 |
Package not installed |
EREMOTE |
66 |
Object is remote |
ENOLINK |
67 |
Link has been severed |
EADV |
68 |
Advertise error |
ESRMNT |
69 |
Srmount error |
ECOMM |
70 |
Communication error on send |
EPROTO |
71 |
Protocol error |
EMULTIHOP |
72 |
Multihop attempted |
EDOTDOT |
73 |
RFS specific error |
EBADMSG |
74 |
Not a data message |
EOVERFLOW |
75 |
Value too large for defined data type |
ENOTUNIQ |
76 |
Name not unique on network |
EBADFD |
77 |
File descriptor in bad state |
EREMCHG |
78 |
Remote address changed |
ELIBACC |
79 |
Cannot access a needed shared library |
ELIBBAD |
80 |
Accessing a corrupted shared library |
ELIBSCN |
81 |
A .lib section in an .out is corrupted |
ELIBMAX |
82 |
Linking in too many shared libraries |
ELIBEXEC |
83 |
Cannot exec a shared library directly |
EILSEQ |
84 |
Illegal byte sequence |
ERESTART |
85 |
Interrupted system call should be restarted |
ESTRPIPE |
86 |
Streams pipe error |
EUSERS |
87 |
Too many users |
ENOTSOCK |
88 |
Socket operation on non-socket |
EDESTADDRREQ |
89 |
Destination address required |
EMSGSIZE |
90 |
Message too long |
EPROTOTYPE |
91 |
Protocol wrong type for socket |
ENOPROTOOPT |
92 |
Protocol not available |
EPROTONOSUPPORT |
93 |
Protocol not supported |
ESOCKTNOSUPPORT |
94 |
Socket type not supported |
EOPNOTSUPP |
95 |
Operation not supported on transport |
EPFNOSUPPORT |
96 |
Protocol family not supported |
EAFNOSUPPORT |
97 |
Address family not supported by protocol |
EADDRINUSE |
98 |
Address already in use |
EADDRNOTAVAIL |
99 |
Cannot assign requested address |
ENETDOWN |
100 |
Network is down |
ENETUNREACH |
101 |
Network is unreachable |
ENETRESET |
102 |
Network dropped |
ECONNABORTED |
103 |
Software caused connection |
ECONNRESET |
104 |
Connection reset by |
ENOBUFS |
105 |
No buffer space available |
EISCONN |
106 |
Transport endpoint |
ENOTCONN |
107 |
Transport endpoint |
ESHUTDOWN |
108 |
Cannot send after transport |
ETOOMANYREFS |
109 |
Too many references |
ETIMEDOUT |
110 |
Connection timed |
ECONNREFUSED |
111 |
Connection refused |
EHOSTDOWN |
112 |
Host is down |
EHOSTUNREACH |
113 |
No route to host |
EALREADY |
114 |
Operation already |
EINPROGRESS |
115 |
Operation now in |
ESTALE |
116 |
Stale NFS file handle |
EUCLEAN |
117 |
Structure needs cleaning |
ENOTNAM |
118 |
Not a XENIX-named |
ENAVAIL |
119 |
No XENIX semaphores |
EISNAM |
120 |
Is a named type file |
EREMOTEIO |
121 |
Remote I/O error |
EDQUOT |
122 |
Quota exceeded |
ENOMEDIUM |
123 |
No medium found |
EMEDIUMTYPE |
124 |
Wrong medium type |
errno0 : Success
errno1 : Operation not permitted
errno2 : No such file or directory
errno3 : No such process
errno4 : Interrupted system call
errno5 : Input/output error
errno6 : No such device or address
errno7 : Argument list too long
errno8 : Exec format error
errno9 : Bad file descriptor
errno10 : No child processes
errno11 : Resource temporarily unavailable
errno12 : Cannot allocate memory
errno13 : Permission denied
errno14 : Bad address
errno15 : Block device required
errno16 : Device or resource busy
errno17 : File exists
errno18 : Invalid cross-device link
errno19 : No such device
errno20 : Not a directory
errno21 : Is a directory
errno22 : Invalid argument
errno23 : Too many open files in system
errno24 : Too many open files
errno25 : Inappropriate ioctl for device
errno26 : Text file busy
errno27 : File too large
errno28 : No space left on device
errno29 : Illegal seek
errno30 : Read-only file system
errno31 : Too many links
errno32 : Broken pipe