• errno 的使用


    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
    View Code

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

  • 相关阅读:
    LuoGu P1006 传纸条
    LuoGu P1083 借教室
    动态规划-区间dp-Palindrome Removal
    咕果
    直径问题 Diameter Problems
    Contest 161
    ALBert
    Focal Loss
    Contest 159
    Contest 160
  • 原文地址:https://www.cnblogs.com/xuyaowen/p/linux-errno.html
Copyright © 2020-2023  润新知