error是一个包含在<errno.h>中的预定义的外部int变量,用于表示最近一个函数调用是否产生了错误。若为0,则无错误,其它值均表示一类错误。
perror()和strerror()函数可以把errno的值转化为有意义的字符输出。
perror()和 strerror 使用:
#include <stdio.h> #include <errno.h> #include <string.h> #include <dirent.h> #include <stdlib.h> int main(){ extern int errno; errno = 0; opendir("123456"); printf("errno %d ", errno); if(errno!=0){ perror("opendir"); } if(errno!=0){ printf("%s ", strerror(errno)); } return 0; }
执行结果:
打印出当前linux 系统支持的所有的错误号:
#include <stdio.h> #include <errno.h> #include <string.h> int main(){ for(int i=0;i< 140; i++) printf("errno:%d -> %s ", i, strerror(i)); return 0; }
当前系统所有错误号:
errno:0 -> Success errno:1 -> Operation not permitted errno:2 -> No such file or directory errno:3 -> No such process errno:4 -> Interrupted system call errno:5 -> Input/output error errno:6 -> No such device or address errno:7 -> Argument list too long errno:8 -> Exec format error errno:9 -> Bad file descriptor errno:10 -> No child processes errno:11 -> Resource temporarily unavailable errno:12 -> Cannot allocate memory errno:13 -> Permission denied errno:14 -> Bad address errno:15 -> Block device required errno:16 -> Device or resource busy errno:17 -> File exists errno:18 -> Invalid cross-device link errno:19 -> No such device errno:20 -> Not a directory errno:21 -> Is a directory errno:22 -> Invalid argument errno:23 -> Too many open files in system errno:24 -> Too many open files errno:25 -> Inappropriate ioctl for device errno:26 -> Text file busy errno:27 -> File too large errno:28 -> No space left on device errno:29 -> Illegal seek errno:30 -> Read-only file system errno:31 -> Too many links errno:32 -> Broken pipe errno:33 -> Numerical argument out of domain errno:34 -> Numerical result out of range errno:35 -> Resource deadlock avoided errno:36 -> File name too long errno:37 -> No locks available errno:38 -> Function not implemented errno:39 -> Directory not empty errno:40 -> Too many levels of symbolic links errno:41 -> Unknown error 41 errno:42 -> No message of desired type errno:43 -> Identifier removed errno:44 -> Channel number out of range errno:45 -> Level 2 not synchronized errno:46 -> Level 3 halted errno:47 -> Level 3 reset errno:48 -> Link number out of range errno:49 -> Protocol driver not attached errno:50 -> No CSI structure available errno:51 -> Level 2 halted errno:52 -> Invalid exchange errno:53 -> Invalid request descriptor errno:54 -> Exchange full errno:55 -> No anode errno:56 -> Invalid request code errno:57 -> Invalid slot errno:58 -> Unknown error 58 errno:59 -> Bad font file format errno:60 -> Device not a stream errno:61 -> No data available errno:62 -> Timer expired errno:63 -> Out of streams resources errno:64 -> Machine is not on the network errno:65 -> Package not installed errno:66 -> Object is remote errno:67 -> Link has been severed errno:68 -> Advertise error errno:69 -> Srmount error errno:70 -> Communication error on send errno:71 -> Protocol error errno:72 -> Multihop attempted errno:73 -> RFS specific error errno:74 -> Bad message errno:75 -> Value too large for defined data type errno:76 -> Name not unique on network errno:77 -> File descriptor in bad state errno:78 -> Remote address changed errno:79 -> Can not access a needed shared library errno:80 -> Accessing a corrupted shared library errno:81 -> .lib section in a.out corrupted errno:82 -> Attempting to link in too many shared libraries errno:83 -> Cannot exec a shared library directly errno:84 -> Invalid or incomplete multibyte or wide character errno:85 -> Interrupted system call should be restarted errno:86 -> Streams pipe error errno:87 -> Too many users errno:88 -> Socket operation on non-socket errno:89 -> Destination address required errno:90 -> Message too long errno:91 -> Protocol wrong type for socket errno:92 -> Protocol not available errno:93 -> Protocol not supported errno:94 -> Socket type not supported errno:95 -> Operation not supported errno:96 -> Protocol family not supported errno:97 -> Address family not supported by protocol errno:98 -> Address already in use errno:99 -> Cannot assign requested address errno:100 -> Network is down errno:101 -> Network is unreachable errno:102 -> Network dropped connection on reset errno:103 -> Software caused connection abort errno:104 -> Connection reset by peer errno:105 -> No buffer space available errno:106 -> Transport endpoint is already connected errno:107 -> Transport endpoint is not connected errno:108 -> Cannot send after transport endpoint shutdown errno:109 -> Too many references: cannot splice errno:110 -> Connection timed out errno:111 -> Connection refused errno:112 -> Host is down errno:113 -> No route to host errno:114 -> Operation already in progress errno:115 -> Operation now in progress errno:116 -> Stale file handle errno:117 -> Structure needs cleaning errno:118 -> Not a XENIX named type file errno:119 -> No XENIX semaphores available errno:120 -> Is a named type file errno:121 -> Remote I/O error errno:122 -> Disk quota exceeded errno:123 -> No medium found errno:124 -> Wrong medium type errno:125 -> Operation canceled errno:126 -> Required key not available errno:127 -> Key has expired errno:128 -> Key has been revoked errno:129 -> Key was rejected by service errno:130 -> Owner died errno:131 -> State not recoverable errno:132 -> Operation not possible due to RF-kill errno:133 -> Memory page has hardware error errno:134 -> Unknown error 134 errno:135 -> Unknown error 135 errno:136 -> Unknown error 136 errno:137 -> Unknown error 137 errno:138 -> Unknown error 138 errno:139 -> Unknown error 139
保持更新,转载请注明出处。