errno.h 错误码描述.

描述:一般说的Linux源码的目录,默认是基于 /usr/include/ 的.

  使用 

1 char *strerror(int errnum);

  函数打印错误代码的描述.我简单对比了一下,发现描述大体一致,但有些地方, strerror 函数的描述还稍微详细点.

  在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较 麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了:

  实现代码:

 1 #include <string.h>    //for strerror(i)

 2 #include <stdlib.h>

 3 #include <stdio.h>

 4 

 5 int

 6 main(void) {

 7     int errno;

 8     for(errno = 0; errno <= 256; errno++)

 9         printf("errno.%2d-%s\n", errno, strerror(errno));

10     exit(0);

11 }

结果如下:

  1 errno. 0-Success

  2 errno. 1-Operation not permitted

  3 errno. 2-No such file or directory

  4 errno. 3-No such process

  5 errno. 4-Interrupted system call

  6 errno. 5-Input/output error

  7 errno. 6-No such device or address

  8 errno. 7-Argument list too long

  9 errno. 8-Exec format error

 10 errno. 9-Bad file descriptor

 11 errno.10-No child processes

 12 errno.11-Resource temporarily unavailable

 13 errno.12-Cannot allocate memory

 14 errno.13-Permission denied

 15 errno.14-Bad address

 16 errno.15-Block device required

 17 errno.16-Device or resource busy

 18 errno.17-File exists

 19 errno.18-Invalid cross-device link

 20 errno.19-No such device

 21 errno.20-Not a directory

 22 errno.21-Is a directory

 23 errno.22-Invalid argument

 24 errno.23-Too many open files in system

 25 errno.24-Too many open files

 26 errno.25-Inappropriate ioctl for device

 27 errno.26-Text file busy

 28 errno.27-File too large

 29 errno.28-No space left on device

 30 errno.29-Illegal seek

 31 errno.30-Read-only file system

 32 errno.31-Too many links

 33 errno.32-Broken pipe

 34 errno.33-Numerical argument out of domain

 35 errno.34-Numerical result out of range

 36 errno.35-Resource deadlock avoided

 37 errno.36-File name too long

 38 errno.37-No locks available

 39 errno.38-Function not implemented

 40 errno.39-Directory not empty

 41 errno.40-Too many levels of symbolic links

 42 errno.41-Unknown error 41

 43 errno.42-No message of desired type

 44 errno.43-Identifier removed

 45 errno.44-Channel number out of range

 46 errno.45-Level 2 not synchronized

 47 errno.46-Level 3 halted

 48 errno.47-Level 3 reset

 49 errno.48-Link number out of range

 50 errno.49-Protocol driver not attached

 51 errno.50-No CSI structure available

 52 errno.51-Level 2 halted

 53 errno.52-Invalid exchange

 54 errno.53-Invalid request descriptor

 55 errno.54-Exchange full

 56 errno.55-No anode

 57 errno.56-Invalid request code

 58 errno.57-Invalid slot

 59 errno.58-Unknown error 58

 60 errno.59-Bad font file format

 61 errno.60-Device not a stream

 62 errno.61-No data available

 63 errno.62-Timer expired

 64 errno.63-Out of streams resources

 65 errno.64-Machine is not on the network

 66 errno.65-Package not installed

 67 errno.66-Object is remote

 68 errno.67-Link has been severed

 69 errno.68-Advertise error

 70 errno.69-Srmount error

 71 errno.70-Communication error on send

 72 errno.71-Protocol error

 73 errno.72-Multihop attempted

 74 errno.73-RFS specific error

 75 errno.74-Bad message

 76 errno.75-Value too large for defined data type

 77 errno.76-Name not unique on network

 78 errno.77-File descriptor in bad state

 79 errno.78-Remote address changed

 80 errno.79-Can not access a needed shared library

 81 errno.80-Accessing a corrupted shared library

 82 errno.81-.lib section in a.out corrupted

 83 errno.82-Attempting to link in too many shared libraries

 84 errno.83-Cannot exec a shared library directly

 85 errno.84-Invalid or incomplete multibyte or wide character

 86 errno.85-Interrupted system call should be restarted

 87 errno.86-Streams pipe error

 88 errno.87-Too many users

 89 errno.88-Socket operation on non-socket

 90 errno.89-Destination address required

 91 errno.90-Message too long

 92 errno.91-Protocol wrong type for socket

 93 errno.92-Protocol not available

 94 errno.93-Protocol not supported

 95 errno.94-Socket type not supported

 96 errno.95-Operation not supported

 97 errno.96-Protocol family not supported

 98 errno.97-Address family not supported by protocol

 99 errno.98-Address already in use

100 errno.99-Cannot assign requested address

101 errno.100-Network is down

102 errno.101-Network is unreachable

103 errno.102-Network dropped connection on reset

104 errno.103-Software caused connection abort

105 errno.104-Connection reset by peer

106 errno.105-No buffer space available

107 errno.106-Transport endpoint is already connected

108 errno.107-Transport endpoint is not connected

109 errno.108-Cannot send after transport endpoint shutdown

110 errno.109-Too many references: cannot splice

111 errno.110-Connection timed out

112 errno.111-Connection refused

113 errno.112-Host is down

114 errno.113-No route to host

115 errno.114-Operation already in progress

116 errno.115-Operation now in progress

117 errno.116-Stale NFS file handle

118 errno.117-Structure needs cleaning

119 errno.118-Not a XENIX named type file

120 errno.119-No XENIX semaphores available

121 errno.120-Is a named type file

122 errno.121-Remote I/O error

123 errno.122-Disk quota exceeded

124 errno.123-No medium found

125 errno.124-Wrong medium type

126 errno.125-Operation canceled

127 errno.126-Required key not available

128 errno.127-Key has expired

129 errno.128-Key has been revoked

130 errno.129-Key was rejected by service

131 errno.130-Owner died

132 errno.131-State not recoverable

  其中,132及其往后的,都显示unknown error,没有被使用.

  从 errno.h头文件,向上追溯,发现根据不同的机器,放在不同的头文件. 基本上,这些错误码的具体描述都放在 asm-generic/errno-base.h 和 asm-generic/errno.h 这两个头文件中.

  这里顺带将这些对应常量列出:

    asm-generic/errno-base.h

    #define EPERM            1      /* Operation not permitted */

  5 #define ENOENT           2      /* No such file or directory */

  6 #define ESRCH            3      /* No such process */

  7 #define EINTR            4      /* Interrupted system call */

  8 #define EIO              5      /* I/O error */

  9 #define ENXIO            6      /* No such device or address */

 10 #define E2BIG            7      /* Argument list too long */

 11 #define ENOEXEC          8      /* Exec format error */

 12 #define EBADF            9      /* Bad file number */

 13 #define ECHILD          10      /* No child processes */

 14 #define EAGAIN          11      /* Try again */

 15 #define ENOMEM          12      /* Out of memory */

 16 #define EACCES          13      /* Permission denied */

 17 #define EFAULT          14      /* Bad address */

 18 #define ENOTBLK         15      /* Block device required */

 19 #define EBUSY           16      /* Device or resource busy */

 20 #define EEXIST          17      /* File exists */

 21 #define EXDEV           18      /* Cross-device link */

 22 #define ENODEV          19      /* No such device */

 23 #define ENOTDIR         20      /* Not a directory */

 24 #define EISDIR          21      /* Is a directory */

 25 #define EINVAL          22      /* Invalid argument */

 26 #define ENFILE          23      /* File table overflow */

 27 #define EMFILE          24      /* Too many open files */

 28 #define ENOTTY          25      /* Not a typewriter */

 29 #define ETXTBSY         26      /* Text file busy */

 30 #define EFBIG           27      /* File too large */

 31 #define ENOSPC          28      /* No space left on device */

 32 #define ESPIPE          29      /* Illegal seek */

 33 #define EROFS           30      /* Read-only file system */

 34 #define EMLINK          31      /* Too many links */

 35 #define EPIPE           32      /* Broken pipe */

 36 #define EDOM            33      /* Math argument out of domain of func */

 37 #define ERANGE          34      /* Math result not representable */

 38

 39 #endif

    asm-generic/errno.h

  6 #define DLK            35      /* Resource deadlock would occur */

  7 #define ENAMETOOLONG    36      /* File name too long */

  8 #define ENOLCK          37      /* No record locks available */

  9 #define ENOSYS          38      /* Function not implemented */

 10 #define ENOTEMPTY       39      /* Directory not empty */

 11 #define ELOOP           40      /* Too many symbolic links encountered */

 12 #define EWOULDBLOCK     EAGAIN  /* Operation would block */

 13 #define ENOMSG          42      /* No message of desired type */

 14 #define EIDRM           43      /* Identifier removed */

 15 #define ECHRNG          44      /* Channel number out of range */

 16 #define EL2NSYNC        45      /* Level 2 not synchronized */

 17 #define EL3HLT          46      /* Level 3 halted */

 18 #define EL3RST          47      /* Level 3 reset */

 19 #define ELNRNG          48      /* Link number out of range */

 20 #define EUNATCH         49      /* Protocol driver not attached */

 21 #define ENOCSI          50      /* No CSI structure available */

 22 #define EL2HLT          51      /* Level 2 halted */

 23 #define EBADE           52      /* Invalid exchange */

 24 #define EBADR           53      /* Invalid request descriptor */

 25 #define EXFULL          54      /* Exchange full */

 26 #define ENOANO          55      /* No anode */

 27 #define EBADRQC         56      /* Invalid request code */

 28 #define EBADSLT         57      /* Invalid slot */

 29

 30 #define EDEADLOCK       EDEADLK

 31

 32 #define EBFONT          59      /* Bad font file format */

 33 #define ENOSTR          60      /* Device not a stream */

 34 #define ENODATA         61      /* No data available */

 35 #define ETIME           62      /* Timer expired */

 36 #define ENOSR           63      /* Out of streams resources */

 37 #define ENONET          64      /* Machine is not on the network */

 38 #define ENOPKG          65      /* Package not installed */

 39 #define EREMOTE         66      /* Object is remote */

 40 #define ENOLINK         67      /* Link has been severed */

 41 #define EADV            68      /* Advertise error */

 42 #define ESRMNT          69      /* Srmount error */

 43 #define ECOMM           70      /* Communication error on send */

 44 #define EPROTO          71      /* Protocol error */

 45 #define EMULTIHOP       72      /* Multihop attempted */

 46 #define EDOTDOT         73      /* RFS specific error */

 47 #define EBADMSG         74      /* Not a data message */

 48 #define EOVERFLOW       75      /* Value too large for defined data type */

 49 #define ENOTUNIQ        76      /* Name not unique on network */

 50 #define EBADFD          77      /* File descriptor in bad state */

 51 #define EREMCHG         78      /* Remote address changed */

 52 #define ELIBACC         79      /* Can not access a needed shared library */ 

 53 #define ELIBBAD         80      /* Accessing a corrupted shared library */

 54 #define ELIBSCN         81      /* .lib section in a.out corrupted */

 55 #define ELIBMAX         82      /* Attempting to link in too many shared lib    raries */

 56 #define ELIBEXEC        83      /* Cannot exec a shared library directly */

 57 #define EILSEQ          84      /* Illegal byte sequence */

 58 #define ERESTART        85      /* Interrupted system call should be restart    ed */

 59 #define ESTRPIPE        86      /* Streams pipe error */

 60 #define EUSERS          87      /* Too many users */

 61 #define ENOTSOCK        88      /* Socket operation on non-socket */

 62 #define EDESTADDRREQ    89      /* Destination address required */

 63 #define EMSGSIZE        90      /* Message too long */

 64 #define EPROTOTYPE      91      /* Protocol wrong type for socket */

 65 #define ENOPROTOOPT     92      /* Protocol not available */

 66 #define EPROTONOSUPPORT 93      /* Protocol not supported */

 67 #define ESOCKTNOSUPPORT 94      /* Socket type not supported */

 68 #define EOPNOTSUPP      95      /* Operation not supported on transport endp    oint */

 69 #define EPFNOSUPPORT    96      /* Protocol family not supported */

 70 #define EAFNOSUPPORT    97      /* Address family not supported by protocol

    */

 71 #define EADDRINUSE      98      /* Address already in use */

 72 #define EADDRNOTAVAIL   99      /* Cannot assign requested address */

 73 #define ENETDOWN        100     /* Network is down */

 74 #define ENETUNREACH     101     /* Network is unreachable */

 75 #define ENETRESET       102     /* Network dropped connection because of res    et */

 76 #define ECONNABORTED    103     /* Software caused connection abort */

 77 #define ECONNRESET      104     /* Connection reset by peer */

 78 #define ENOBUFS         105     /* No buffer space available */

 79 #define EISCONN         106     /* Transport endpoint is already connected *    /

 80 #define ENOTCONN        107     /* Transport endpoint is not connected */

 81 #define ESHUTDOWN       108     /* Cannot send after transport endpoint shut    down */

 82 #define ETOOMANYREFS    109     /* Too many references: cannot splice */

 83 #define ETIMEDOUT       110     /* Connection timed out */

 84 #define ECONNREFUSED    111     /* Connection refused */

 85 #define EHOSTDOWN       112     /* Host is down */

 86 #define EHOSTUNREACH    113     /* No route to host */

 87 #define EALREADY        114     /* Operation already in progress */

 88 #define EINPROGRESS     115     /* Operation now in progress */

 89 #define ESTALE          116     /* Stale NFS file handle */

 90 #define EUCLEAN         117     /* Structure needs cleaning */

 91 #define ENOTNAM         118     /* Not a XENIX named type file */

 92 #define ENAVAIL         119     /* No XENIX semaphores available */

 93 #define EISNAM          120     /* Is a named type file */

 94 #define EREMOTEIO       121     /* Remote I/O error */

 95 #define EDQUOT          122     /* Quota exceeded */

 96

 97 #define ENOMEDIUM       123     /* No medium found */

 98 #define EMEDIUMTYPE     124     /* Wrong medium type */

 99 #define ECANCELED       125     /* Operation Canceled */

100 #define ENOKEY          126     /* Required key not available */

101 #define EKEYEXPIRED     127     /* Key has expired */

102 #define EKEYREVOKED     128     /* Key has been revoked */

103 #define EKEYREJECTED    129     /* Key was rejected by service */

104

105 /* for robust mutexes */

106 #define EOWNERDEAD      130     /* Owner died */

107 #define ENOTRECOVERABLE 131     /* State not recoverable */

108

109 #define ERFKILL         132     /* Operation not possible due to RF-kill */

110

111 #endif

  引自: http://blog.csdn.net/kofiory/article/details/5790409

你可能感兴趣的:(错误)