為了方便查看Linux系統下的錯誤碼以及它的含義,寫了一個程式來列印這些資訊。
listerrno.c
#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h></p><p>#define MAX_ERRNO 256</p><p>int main(int argc, char* argv[])<br />{<br /> int n = 0;</p><p> printf("----------------------- Errno --------------------/n");<br /> for(n=0; n < MAX_ERRNO; n++)<br /> {<br /> printf("#%d, %s/n", n, strerror(n));<br /> }<br /> printf("--------------------------------------------------/n");</p><p> return 0;<br />}
Makefile:
E_TARGET = listerrno</p><p>all: $(E_TARGET)</p><p>listerrno:<br /> gcc -o $@ listerrno.c</p><p>clean:<br /> rm -rf $(E_TARGET) *.o
在Redhat Enterprise Linux 5 上的列印結果:
----------------------- Errno --------------------
#0, Success
#1, Operation not permitted
#2, No such file or directory
#3, No such process
#4, Interrupted system call
#5, Input/output error
#6, No such device or address
#7, Argument list too long
#8, Exec format error
#9, Bad file descriptor
#10, No child processes
#11, Resource temporarily unavailable
#12, Cannot allocate memory
#13, Permission denied
#14, Bad address
#15, Block device required
#16, Device or resource busy
#17, File exists
#18, Invalid cross-device link
#19, No such device
#20, Not a directory
#21, Is a directory
#22, Invalid argument
#23, Too many open files in system
#24, Too many open files
#25, Inappropriate ioctl for device
#26, Text file busy
#27, File too large
#28, No space left on device
#29, Illegal seek
#30, Read-only file system
#31, Too many links
#32, Broken pipe
#33, Numerical argument out of domain
#34, Numerical result out of range
#35, Resource deadlock avoided
#36, File name too long
#37, No locks available
#38, Function not implemented
#39, Directory not empty
#40, Too many levels of symbolic links
#41, Unknown error 41
#42, No message of desired type
#43, Identifier removed
#44, Channel number out of range
#45, Level 2 not synchronized
#46, Level 3 halted
#47, Level 3 reset
#48, Link number out of range
#49, Protocol driver not attached
#50, No CSI structure available
#51, Level 2 halted
#52, Invalid exchange
#53, Invalid request descriptor
#54, Exchange full
#55, No anode
#56, Invalid request code
#57, Invalid slot
#58, Unknown error 58
#59, Bad font file format
#60, Device not a stream
#61, No data available
#62, Timer expired
#63, Out of streams resources
#64, Machine is not on the network
#65, Package not installed
#66, Object is remote
#67, Link has been severed
#68, Advertise error
#69, Srmount error
#70, Communication error on send
#71, Protocol error
#72, Multihop attempted
#73, RFS specific error
#74, Bad message
#75, Value too large for defined data type
#76, Name not unique on network
#77, File descriptor in bad state
#78, Remote address changed
#79, Can not access a needed shared library
#80, Accessing a corrupted shared library
#81, .lib section in a.out corrupted
#82, Attempting to link in too many shared libraries
#83, Cannot exec a shared library directly
#84, Invalid or incomplete multibyte or wide character
#85, Interrupted system call should be restarted
#86, Streams pipe error
#87, Too many users
#88, Socket operation on non-socket
#89, Destination address required
#90, Message too long
#91, Protocol wrong type for socket
#92, Protocol not available
#93, Protocol not supported
#94, Socket type not supported
#95, Operation not supported
#96, Protocol family not supported
#97, Address family not supported by protocol
#98, Address already in use
#99, Cannot assign requested address
#100, Network is down
#101, Network is unreachable
#102, Network dropped connection on reset
#103, Software caused connection abort
#104, Connection reset by peer
#105, No buffer space available
#106, Transport endpoint is already connected
#107, Transport endpoint is not connected
#108, Cannot send after transport endpoint shutdown
#109, Too many references: cannot splice
#110, Connection timed out
#111, Connection refused
#112, Host is down
#113, No route to host
#114, Operation already in progress
#115, Operation now in progress
#116, Stale NFS file handle
#117, Structure needs cleaning
#118, Not a XENIX named type file
#119, No XENIX semaphores available
#120, Is a named type file
#121, Remote I/O error
#122, Disk quota exceeded
#123, No medium found
#124, Wrong medium type
#125, Operation canceled
#126, Required key not available
#127, Key has expired
#128, Key has been revoked
#129, Key was rejected by service
#130, Owner died
#131, State not recoverable
#132, Unknown error 132
#133, Unknown error 133
#134, Unknown error 134
#135, Unknown error 135
#136, Unknown error 136
#137, Unknown error 137
#138, Unknown error 138
#139, Unknown error 139
#140, Unknown error 140
#141, Unknown error 141
#142, Unknown error 142
#143, Unknown error 143
#144, Unknown error 144
#145, Unknown error 145
#146, Unknown error 146
#147, Unknown error 147
#148, Unknown error 148
#149, Unknown error 149
#150, Unknown error 150
#151, Unknown error 151
#152, Unknown error 152
#153, Unknown error 153
#154, Unknown error 154
#155, Unknown error 155
#156, Unknown error 156
#157, Unknown error 157
#158, Unknown error 158
#159, Unknown error 159
#160, Unknown error 160
#161, Unknown error 161
#162, Unknown error 162
#163, Unknown error 163
#164, Unknown error 164
#165, Unknown error 165
#166, Unknown error 166
#167, Unknown error 167
#168, Unknown error 168
#169, Unknown error 169
#170, Unknown error 170
#171, Unknown error 171
#172, Unknown error 172
#173, Unknown error 173
#174, Unknown error 174
#175, Unknown error 175
#176, Unknown error 176
#177, Unknown error 177
#178, Unknown error 178
#179, Unknown error 179
#180, Unknown error 180
#181, Unknown error 181
#182, Unknown error 182
#183, Unknown error 183
#184, Unknown error 184
#185, Unknown error 185
#186, Unknown error 186
#187, Unknown error 187
#188, Unknown error 188
#189, Unknown error 189
#190, Unknown error 190
#191, Unknown error 191
#192, Unknown error 192
#193, Unknown error 193
#194, Unknown error 194
#195, Unknown error 195
#196, Unknown error 196
#197, Unknown error 197
#198, Unknown error 198
#199, Unknown error 199
#200, Unknown error 200
#201, Unknown error 201
#202, Unknown error 202
#203, Unknown error 203
#204, Unknown error 204
#205, Unknown error 205
#206, Unknown error 206
#207, Unknown error 207
#208, Unknown error 208
#209, Unknown error 209
#210, Unknown error 210
#211, Unknown error 211
#212, Unknown error 212
#213, Unknown error 213
#214, Unknown error 214
#215, Unknown error 215
#216, Unknown error 216
#217, Unknown error 217
#218, Unknown error 218
#219, Unknown error 219
#220, Unknown error 220
#221, Unknown error 221
#222, Unknown error 222
#223, Unknown error 223
#224, Unknown error 224
#225, Unknown error 225
#226, Unknown error 226
#227, Unknown error 227
#228, Unknown error 228
#229, Unknown error 229
#230, Unknown error 230
#231, Unknown error 231
#232, Unknown error 232
#233, Unknown error 233
#234, Unknown error 234
#235, Unknown error 235
#236, Unknown error 236
#237, Unknown error 237
#238, Unknown error 238
#239, Unknown error 239
#240, Unknown error 240
#241, Unknown error 241
#242, Unknown error 242
#243, Unknown error 243
#244, Unknown error 244
#245, Unknown error 245
#246, Unknown error 246
#247, Unknown error 247
#248, Unknown error 248
#249, Unknown error 249
#250, Unknown error 250
#251, Unknown error 251
#252, Unknown error 252
#253, Unknown error 253
#254, Unknown error 254
#255, Unknown error 255
--------------------------------------------------
這些錯誤碼定義在/usr/include/下幾個標頭檔中。
asm-generic/errno-base.h:
#define EPERM 1 /* Operation not permitted */<br />#define ENOENT 2 /* No such file or directory */<br />#define ESRCH 3 /* No such process */<br />#define EINTR 4 /* Interrupted system call */<br />#define EIO 5 /* I/O error */<br />#define ENXIO 6 /* No such device or address */<br />#define E2BIG 7 /* Argument list too long */<br />#define ENOEXEC 8 /* Exec format error */<br />#define EBADF 9 /* Bad file number */<br />#define ECHILD 10 /* No child processes */<br />#define EAGAIN 11 /* Try again */<br />#define ENOMEM 12 /* Out of memory */<br />#define EACCES 13 /* Permission denied */<br />#define EFAULT 14 /* Bad address */<br />#define ENOTBLK 15 /* Block device required */<br />#define EBUSY 16 /* Device or resource busy */<br />#define EEXIST 17 /* File exists */<br />#define EXDEV 18 /* Cross-device link */<br />#define ENODEV 19 /* No such device */<br />#define ENOTDIR 20 /* Not a directory */<br />#define EISDIR 21 /* Is a directory */<br />#define EINVAL 22 /* Invalid argument */<br />#define ENFILE 23 /* File table overflow */<br />#define EMFILE 24 /* Too many open files */<br />#define ENOTTY 25 /* Not a typewriter */<br />#define ETXTBSY 26 /* Text file busy */<br />#define EFBIG 27 /* File too large */<br />#define ENOSPC 28 /* No space left on device */<br />#define ESPIPE 29 /* Illegal seek */<br />#define EROFS 30 /* Read-only file system */<br />#define EMLINK 31 /* Too many links */<br />#define EPIPE 32 /* Broken pipe */<br />#define EDOM 33 /* Math argument out of domain of func */<br />#define ERANGE 34 /* Math result not representable */
asm-generic/errno.h:
#define EDEADLK 35 /* Resource deadlock would occur */<br />#define ENAMETOOLONG 36 /* File name too long */<br />#define ENOLCK 37 /* No record locks available */<br />#define ENOSYS 38 /* Function not implemented */<br />#define ENOTEMPTY 39 /* Directory not empty */<br />#define ELOOP 40 /* Too many symbolic links encountered */<br />#define EWOULDBLOCK EAGAIN /* Operation would block */<br />#define ENOMSG 42 /* No message of desired type */<br />#define EIDRM 43 /* Identifier removed */<br />#define ECHRNG 44 /* Channel number out of range */<br />#define EL2NSYNC 45 /* Level 2 not synchronized */<br />#define EL3HLT 46 /* Level 3 halted */<br />#define EL3RST 47 /* Level 3 reset */<br />#define ELNRNG 48 /* Link number out of range */<br />#define EUNATCH 49 /* Protocol driver not attached */<br />#define ENOCSI 50 /* No CSI structure available */<br />#define EL2HLT 51 /* Level 2 halted */<br />#define EBADE 52 /* Invalid exchange */<br />#define EBADR 53 /* Invalid request descriptor */<br />#define EXFULL 54 /* Exchange full */<br />#define ENOANO 55 /* No anode */<br />#define EBADRQC 56 /* Invalid request code */<br />#define EBADSLT 57 /* Invalid slot */</p><p>#define EDEADLOCK EDEADLK</p><p>#define EBFONT 59 /* Bad font file format */<br />#define ENOSTR 60 /* Device not a stream */<br />#define ENODATA 61 /* No data available */<br />#define ETIME 62 /* Timer expired */<br />#define ENOSR 63 /* Out of streams resources */<br />#define ENONET 64 /* Machine is not on the network */<br />#define ENOPKG 65 /* Package not installed */<br />#define EREMOTE 66 /* Object is remote */<br />#define ENOLINK 67 /* Link has been severed */<br />#define EADV 68 /* Advertise error */<br />#define ESRMNT 69 /* Srmount error */<br />#define ECOMM 70 /* Communication error on send */<br />#define EPROTO 71 /* Protocol error */<br />#define EMULTIHOP 72 /* Multihop attempted */<br />#define EDOTDOT 73 /* RFS specific error */<br />#define EBADMSG 74 /* Not a data message */<br />#define EOVERFLOW 75 /* Value too large for defined data type */<br />#define ENOTUNIQ 76 /* Name not unique on network */<br />#define EBADFD 77 /* File descriptor in bad state */<br />#define EREMCHG 78 /* Remote address changed */<br />#define ELIBACC 79 /* Can not access a needed shared library */<br />#define ELIBBAD 80 /* Accessing a corrupted shared library */<br />#define ELIBSCN 81 /* .lib section in a.out corrupted */<br />#define ELIBMAX 82 /* Attempting to link in too many shared libraries */<br />#define ELIBEXEC 83 /* Cannot exec a shared library directly */<br />#define EILSEQ 84 /* Illegal byte sequence */<br />#define ERESTART 85 /* Interrupted system call should be restarted */<br />#define ESTRPIPE 86 /* Streams pipe error */<br />#define EUSERS 87 /* Too many users */<br />#define ENOTSOCK 88 /* Socket operation on non-socket */<br />#define EDESTADDRREQ 89 /* Destination address required */<br />#define EMSGSIZE 90 /* Message too long */<br />#define EPROTOTYPE 91 /* Protocol wrong type for socket */<br />#define ENOPROTOOPT 92 /* Protocol not available */<br />#define EPROTONOSUPPORT 93 /* Protocol not supported */<br />#define ESOCKTNOSUPPORT 94 /* Socket type not supported */<br />#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */<br />#define EPFNOSUPPORT 96 /* Protocol family not supported */<br />#define EAFNOSUPPORT 97 /* Address family not supported by protocol */<br />#define EADDRINUSE 98 /* Address already in use */<br />#define EADDRNOTAVAIL 99 /* Cannot assign requested address */<br />#define ENETDOWN 100 /* Network is down */<br />#define ENETUNREACH 101 /* Network is unreachable */<br />#define ENETRESET 102 /* Network dropped connection because of reset */<br />#define ECONNABORTED 103 /* Software caused connection abort */<br />#define ECONNRESET 104 /* Connection reset by peer */<br />#define ENOBUFS 105 /* No buffer space available */<br />#define EISCONN 106 /* Transport endpoint is already connected */<br />#define ENOTCONN 107 /* Transport endpoint is not connected */<br />#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */<br />#define ETOOMANYREFS 109 /* Too many references: cannot splice */<br />#define ETIMEDOUT 110 /* Connection timed out */<br />#define ECONNREFUSED 111 /* Connection refused */<br />#define EHOSTDOWN 112 /* Host is down */<br />#define EHOSTUNREACH 113 /* No route to host */<br />#define EALREADY 114 /* Operation already in progress */<br />#define EINPROGRESS 115 /* Operation now in progress */<br />#define ESTALE 116 /* Stale NFS file handle */<br />#define EUCLEAN 117 /* Structure needs cleaning */<br />#define ENOTNAM 118 /* Not a XENIX named type file */<br />#define ENAVAIL 119 /* No XENIX semaphores available */<br />#define EISNAM 120 /* Is a named type file */<br />#define EREMOTEIO 121 /* Remote I/O error */<br />#define EDQUOT 122 /* Quota exceeded */</p><p>#define ENOMEDIUM 123 /* No medium found */<br />#define EMEDIUMTYPE 124 /* Wrong medium type */<br />#define ECANCELED 125 /* Operation Canceled */<br />#define ENOKEY 126 /* Required key not available */<br />#define EKEYEXPIRED 127 /* Key has expired */<br />#define EKEYREVOKED 128 /* Key has been revoked */<br />#define EKEYREJECTED 129 /* Key was rejected by service */</p><p>/* for robust mutexes */<br />#define EOWNERDEAD 130 /* Owner died */<br />#define ENOTRECOVERABLE 131 /* State not recoverable */