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

posted @ 2014-09-02 09:15  wonkju  阅读(767)  评论(0编辑  收藏  举报