errno 的使用

2020-12-30 10:48:33 浏览数 (1)

error是一个包含在<errno.h>中的预定义的外部int变量,用于表示最近一个函数调用是否产生了错误。若为0,则无错误,其它值均表示一类错误。

perror()和strerror()函数可以把errno的值转化为有意义的字符输出。

 perror()和 strerror 使用:

代码语言:javascript复制
#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 %dn", errno);
        if(errno!=0){
                perror("opendir");
        }
        if(errno!=0){
                printf("%sn", strerror(errno));
        }
        return 0;
}

执行结果:

打印出当前linux 系统支持的所有的错误号:

代码语言:javascript复制
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main(){
        for(int i=0;i< 140; i  )
                        printf("errno:%d -> %sn", i, strerror(i));
        return 0;
}

 当前系统所有错误号:

代码语言:javascript复制
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

保持更新,转载请注明出处。

0 人点赞