高兴的四季豆 · 合肥将引进大熊猫? ...· 3 天前 · |
深情的可乐 · 《我爱健康》双月刊_市疾控中心· 7 月前 · |
一身肌肉的杯子 · 募资55亿专攻ARCFOX,姜德义能否破处北 ...· 1 年前 · |
个性的啄木鸟 · 北京交通大学教师名录· 1 年前 · |
犯傻的手链 · 东风风神电动品牌eπ旗下首款原型车亮相,太科 ...· 1 年前 · |
errno 在 <errno.h> 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。
strerror() 函数依据 errno 值返回错误描述字符串,下面程序打印对照表:
#include <errno.h>
#include <string.h>
#include <stdio.h>
int main()
int i;
for(i = 0; i < 140; ++i)
errno = i;
printf("errno %d :\t\t%s\n",i,strerror(errno));
return 0;
}
错误对照表:
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
errno33 : Numerical argument out of domain
errno34 : Numerical result out of range
errno35 : Resource deadlock avoided
errno36 : File name too long
errno37 : No locks available
errno38 : Function not implemented
errno39 : Directory not empty
errno40 : Too many levels of symbolic links
errno41 : Unknown error 41
errno42 : No message of desired type
errno43 : Identifier removed
errno44 : Channel number out of range
errno45 : Level 2 not synchronized
errno46 : Level 3 halted
errno47 : Level 3 reset
errno48 : Link number out of range
errno49 : Protocol driver not attached
errno50 : No CSI structure available
errno51 : Level 2 halted
errno52 : Invalid exchange
errno53 : Invalid request descriptor
errno54 : Exchange full
errno55 : No anode
errno56 : Invalid request code
errno57 : Invalid slot
errno58 : Unknown error 58
errno59 : Bad font file format
errno60 : Device not a stream
errno61 : No data available
errno62 : Timer expired
errno63 : Out of streams resources
errno64 : Machine is not on the network
errno65 : Package not installed
errno66 : Object is remote
errno67 : Link has been severed
errno68 : Advertise error
errno69 : Srmount error
errno70 : Communication error on send
errno71 : Protocol error
errno72 : Multihop attempted
errno73 : RFS specific error
errno74 : Bad message
errno75 : Value too large for defined datatype
errno76 : Name not unique on network
errno77 : File descriptor in bad state
errno78 : Remote address changed
errno79 : Can not access a needed sharedlibrary
errno80 : Accessing a corrupted sharedlibrary
errno81 : .lib section in a.out corrupted
errno82 : Attempting to link in too manyshared libraries
errno83 : Cannot exec a shared librarydirectly
errno84 : Invalid or incomplete multibyte orwide character
errno85 : Interrupted system call should berestarted
errno86 : Streams pipe error
errno87 : Too many users
errno88 : Socket operation on non-socket
errno89 : Destinationaddress required
errno90 : Message too long
errno91 : Protocol wrong type for socket
errno92 : Protocol not available
errno93 : Protocol not supported
errno94 : Socket type not supported
errno95 : Operation not supported
errno96 : Protocol family not supported
errno97 : Address family not supported byprotocol
errno98 : Address already in use
errno99 : Cannot assign requested address
errno100 : Network is down
errno101 : Network is unreachable
errno102 : Network dropped connection onreset
errno103 : Software caused connection abort
errno104 : Connection reset by peer
errno105 : No buffer space available
errno106 : Transport endpoint is alreadyconnected
errno107 : Transport endpoint is notconnected
errno108 : Cannot send after transportendpoint shutdown
errno109 : Too many references: cannot splice
errno110 : Connection timed out
errno111 : Connection refused
errno112 : Host is down
errno113 : No route to host
errno114 : Operation already in progress
errno115 : Operation now in progress
errno116 : Stale NFS file handle
errno117 : Structure needs cleaning
errno118 : Not a XENIX named type file
errno119 : No XENIX semaphores available
errno120 : Is a named type file
errno121 : Remote I/O error
errno122 : Disk quota exceeded
errno123 : No medium found
errno124 : Wrong medium type
errno125 : Operation canceled
errno126 : Required key not available
errno127 : Key has expired
errno128 : Key has been revoked
errno129 : Key was rejected by service
errno130 : Owner died
errno131 : State not recoverable
errno132 : Operation not possible due toRF-kill
errno133 : Unknown error 133
errno134 : Unknown error 134
errno135 : Unknown error 135
errno136 : Unknown error 136
errno137 : Unknown error 137
errno138 : Unknown error 138
errno139 : Unknown error 139
由上可见Linux对错误宏的定义。
头文件 /usr/include/asm-generic/errno-base.h 的源码:
#ifndef _ASM_GENERIC_ERRNO_BASE_H
#define _ASM_GENERIC_ERRNO_BASE_H
#define
EPERM
1
/* Operation not permitted */
#define
ENOENT
2
/* No such file or directory */
#define
ESRCH
3
/* No such process */
#define
EINTR
4
/* Interrupted system call */
#define
EIO
5
/* I/O error */
#define
ENXIO
6
/* No such device or address */
#define
E2BIG
7
/* Argument list too long */
#define
ENOEXEC
8
/* Exec format error */
#define
EBADF
9
/* Bad file number */
#define
ECHILD
10
/* No child processes */
#define
EAGAIN
11
/* Try again */
#define
ENOMEM
12
/* Out of memory */
#define
EACCES
13
/* Permission denied */
#define
EFAULT
14
/* Bad address */
#define
ENOTBLK
15
/* Block device required */
#define
EBUSY
16
/* Device or resource busy */
#define
EEXIST
17
/* File exists */
#define
EXDEV
18
/* Cross-device link */
#define
ENODEV
19
/* No such device */
#define
ENOTDIR
20
/* Not a directory */
#define
EISDIR
21
/* Is a directory */
#define
EINVAL
22
/* Invalid argument */
#define
ENFILE
23
/* File table overflow */
#define
EMFILE
24
/* Too many open files */
#define
ENOTTY
25
/* Not a typewriter */
#define
ETXTBSY
26
/* Text file busy */
#define
EFBIG
27
/* File too large */
#define
ENOSPC
28
/* No space left on device */
#define
ESPIPE
29
/* Illegal seek */
#define
EROFS
30
/* Read-only file system */
#define
EMLINK
31
/* Too many links */
#define
EPIPE
32
/* Broken pipe */
#define
EDOM
33
/* Math argument out of domain of func */
#define
ERANGE
34
/* Math result not representable */
#endif
头文件/usr/include/asm-generic/erno.h源码:
#ifndef _ASM_GENERIC_ERRNO_H
#define _ASM_GENERIC_ERRNO_H
#include <asm-generic/errno-base.h>
#define
EDEADLK
35
/* Resource deadlock would occur */
#define
ENAMETOOLONG
36
/* File name too long */
#define
ENOLCK
37
/* No record locks available */
#define
ENOSYS
38
/* Function not implemented */
#define
ENOTEMPTY
39
/* Directory not empty */
#define
ELOOP
40
/* Too many symbolic links encountered */
#define
EWOULDBLOCK
EAGAIN
/* Operation would block */
#define
ENOMSG
42
/* No message of desired type */
#define
EIDRM
43
/* Identifier removed */
#define
ECHRNG
44
/* Channel number out of range */
#define
EL2NSYNC
45
/* Level 2 not synchronized */
#define
EL3HLT
46
/* Level 3 halted */
#define
EL3RST
47
/* Level 3 reset */
#define
ELNRNG
48
/* Link number out of range */
#define
EUNATCH
49
/* Protocol driver not attached */
#define
ENOCSI
50
/* No CSI structure available */
#define
EL2HLT
51
/* Level 2 halted */
#define
EBADE
52
/* Invalid exchange */
#define
EBADR
53
/* Invalid request descriptor */
#define
EXFULL
54
/* Exchange full */
#define
ENOANO
55
/* No anode */
#define
EBADRQC
56
/* Invalid request code */
#define
EBADSLT
57
/* Invalid slot */
#define
EDEADLOCK
EDEADLK
#define
EBFONT
59
/* Bad font file format */
#define
ENOSTR
60
/* Device not a stream */
#define
ENODATA
61
/* No data available */
#define
ETIME
62
/* Timer expired */
#define
ENOSR
63
/* Out of streams resources */
#define
ENONET
64
/* Machine is not on the network */
#define
ENOPKG
65
/* Package not installed */
#define
EREMOTE
66
/* Object is remote */
#define
ENOLINK
67
/* Link has been severed */
#define
EADV
68
/* Advertise error */
#define
ESRMNT
69
/* Srmount error */
#define
ECOMM
70
/* Communication error on send */
#define
EPROTO
71
/* Protocol error */
#define
EMULTIHOP
72
/* Multihop attempted */
#define
EDOTDOT
73
/* RFS specific error */
#define
EBADMSG
74
/* Not a data message */
#define
EOVERFLOW
75
/* Value too large for defined data type */
#define
ENOTUNIQ
76
/* Name not unique on network */
#define
EBADFD
77
/* File descriptor in bad state */
#define
EREMCHG
78
/* Remote address changed */
#define
ELIBACC
79
/* Can not access a needed shared library */
#define
ELIBBAD
80
/* Accessing a corrupted shared library */
#define
ELIBSCN
81
/* .lib section in a.out corrupted */
#define
ELIBMAX
82
/* Attempting to link in too many shared libraries */
#define
ELIBEXEC
83
/* Cannot exec a shared library directly */
#define
EILSEQ
84
/* Illegal byte sequence */
#define
ERESTART
85
/* Interrupted system call should be restarted */
#define
ESTRPIPE
86
/* Streams pipe error */
#define
EUSERS
87
/* Too many users */
#define
ENOTSOCK
88
/* Socket operation on non-socket */
#define
EDESTADDRREQ
89
/* Destination address required */
#define
EMSGSIZE
90
/* Message too long */
#define
EPROTOTYPE
91
/* Protocol wrong type for socket */
#define
ENOPROTOOPT
92
/* Protocol not available */
#define
EPROTONOSUPPORT
93
/* Protocol not supported */
#define
ESOCKTNOSUPPORT
94
/* Socket type not supported */
#define
EOPNOTSUPP
95
/* Operation not supported on transport endpoint */
#define
EPFNOSUPPORT
96
/* Protocol family not supported */
#define
EAFNOSUPPORT
97
/* Address family not supported by protocol */
#define
EADDRINUSE
98
/* Address already in use */
#define
EADDRNOTAVAIL
99
/* Cannot assign requested address */
#define
ENETDOWN
100
/* Network is down */
#define
ENETUNREACH
101
/* Network is unreachable */
#define
ENETRESET
102
/* Network dropped connection because of reset */
#define
ECONNABORTED
103
/* Software caused connection abort */
#define
ECONNRESET
104
/* Connection reset by peer */
#define
ENOBUFS
105
/* No buffer space available */
#define
EISCONN
106
/* Transport endpoint is already connected */
#define
ENOTCONN
107
/* Transport endpoint is not connected */
#define
ESHUTDOWN
108
/* Cannot send after transport endpoint shutdown */
#define
ETOOMANYREFS
109
/* Too many references: cannot splice */
#define
ETIMEDOUT
110
/* Connection timed out */
#define
ECONNREFUSED
111
/* Connection refused */
#define
EHOSTDOWN
112
/* Host is down */
#define
EHOSTUNREACH
113
/* No route to host */
#define
EALREADY
114
/* Operation already in progress */
#define
EINPROGRESS
115
/* Operation now in progress */
#define
ESTALE
116
/* Stale NFS file handle */
#define
EUCLEAN
117
/* Structure needs cleaning */
#define
ENOTNAM
118
/* Not a XENIX named type file */
#define
ENAVAIL
119
/* No XENIX semaphores available */
#define
EISNAM
120
/* Is a named type file */
#define
EREMOTEIO
121
/* Remote I/O error */
#define
EDQUOT
122
/* Quota exceeded */
#define
ENOMEDIUM
123
/* No medium found */
#define
EMEDIUMTYPE
124
/* Wrong medium type */
#define
ECANCELED
125
/* Operation Canceled */
#define
ENOKEY
126
/* Required key not available */
#define
EKEYEXPIRED
127
/* Key has expired */
#define
EKEYREVOKED
128
/* Key has been revoked */
#define
EKEYREJECTED
129
/* Key was rejected by service */
/* for robust mutexes */
#define
EOWNERDEAD
130
/* Owner died */
#define
ENOTRECOVERABLE
131
/* State not recoverable */
#define ERFKILL
132
/* Operation not possible due to RF-kill */
#endif