zoukankan      html  css  js  c++  java
  • errno的基本用法

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

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

    #include <stdio.h>  
    #include <stdlib.h>  
    #include <dirent.h>  
    #include <errno.h>  
    #include <string.h>  
      
    int main(void){  
        extern int errno;  
      
        errno=0;  
        opendir("/home/kkk");  
    //用法1:直接读取errno的值  
        printf("%d
    ", errno);  
      
    //用法2:使用perror函数,把error的值转化为有意义的字符提示。  
        if(errno != 0){  
            perror("opendir: ");  
    //        exit(EXIT_FAILURE);  
        }  
      
    //用法3:类似用法2,但使用strerror函数。  
        if(errno != 0){  
            printf("%s
    ", strerror(errno));  
            exit(0);  
        }  
      
      
        exit(0);  
    }  
    
    
    

    输出结果为:
    2
    opendir: : No such file or directory
    No such file or directory

    以下程序用于显示所有的错误代码含义(经测试,目前的错误代码从0-132,其余未使用)

    #include <stdio.h>  
    #include <errno.h>  
    #include <stdlib.h>  
    #include <string.h>  
      
    int main(void){  
      
        for(int i = 0; i < 140; i++){  
            printf("%4d:%s
    ", i, strerror(i));  
        }  
      
        exit(0);  
    }  
    

    输出结果如下:
    0:Success
    1:Operation not permitted
    2:No such file or directory
    3:No such process
    4:Interrupted system call
    5:Input/output error
    6:No such device or address
    7:Argument list too long
    8:Exec format error
    9:Bad file descriptor
    10:No child processes
    11:Resource temporarily unavailable
    12:Cannot allocate memory
    13:Permission denied
    14:Bad address
    15:Block device required
    16:Device or resource busy
    17:File exists
    18:Invalid cross-device link
    19:No such device
    20:Not a directory
    21:Is a directory
    22:Invalid argument
    23:Too many open files in system
    24:Too many open files
    25:Inappropriate ioctl for device
    26:Text file busy
    27:File too large
    28:No space left on device
    29:Illegal seek
    30:Read-only file system
    31:Too many links
    32:Broken pipe
    33:Numerical argument out of domain
    34:Numerical result out of range
    35:Resource deadlock avoided
    36:File name too long
    37:No locks available
    38:Function not implemented
    39:Directory not empty
    40:Too many levels of symbolic links
    41:Unknown error 41
    42:No message of desired type
    43:Identifier removed
    44:Channel number out of range
    45:Level 2 not synchronized
    46:Level 3 halted
    47:Level 3 reset
    48:Link number out of range
    49:Protocol driver not attached
    50:No CSI structure available
    51:Level 2 halted
    52:Invalid exchange
    53:Invalid request descriptor
    54:Exchange full
    55:No anode
    56:Invalid request code
    57:Invalid slot
    58:Unknown error 58
    59:Bad font file format
    60:Device not a stream
    61:No data available
    62:Timer expired
    63:Out of streams resources
    64:Machine is not on the network
    65:Package not installed
    66:Object is remote
    67:Link has been severed
    68:Advertise error
    69:Srmount error
    70:Communication error on send
    71:Protocol error
    72:Multihop attempted
    73:RFS specific error
    74:Bad message
    75:Value too large for defined data type
    76:Name not unique on network
    77:File descriptor in bad state
    78:Remote address changed
    79:Can not access a needed shared library
    80:Accessing a corrupted shared library
    81:.lib section in a.out corrupted
    82:Attempting to link in too many shared libraries
    83:Cannot exec a shared library directly
    84:Invalid or incomplete multibyte or wide character
    85:Interrupted system call should be restarted
    86:Streams pipe error
    87:Too many users
    88:Socket operation on non-socket
    89:Destination address required
    90:Message too long
    91:Protocol wrong type for socket
    92:Protocol not available
    93:Protocol not supported
    94:Socket type not supported
    95:Operation not supported
    96:Protocol family not supported
    97:Address family not supported by protocol
    98:Address already in use
    99:Cannot assign requested address
    100:Network is down
    101:Network is unreachable
    102:Network dropped connection on reset
    103:Software caused connection abort
    104:Connection reset by peer
    105:No buffer space available
    106:Transport endpoint is already connected
    107:Transport endpoint is not connected
    108:Cannot send after transport endpoint shutdown
    109:Too many references: cannot splice
    110:Connection timed out
    111:Connection refused
    112:Host is down
    113:No route to host
    114:Operation already in progress
    115:Operation now in progress
    116:Stale NFS file handle
    117:Structure needs cleaning
    118:Not a XENIX named type file
    119:No XENIX semaphores available
    120:Is a named type file
    121:Remote I/O error
    122:Disk quota exceeded
    123:No medium found
    124:Wrong medium type
    125:Operation canceled
    126:Required key not available
    127:Key has expired
    128:Key has been revoked
    129:Key was rejected by service
    130:Owner died
    131:State not recoverable
    132:Operation not possible due to RF-kill
    133:Unknown error 133
    134:Unknown error 134
    135:Unknown error 135
    136:Unknown error 136
    137:Unknown error 137
    138:Unknown error 138
    139:Unknown error 139

  • 相关阅读:
    hdu 5400 Arithmetic Sequence
    【小超_Android】android上开源的酷炫的交互动画和视觉效果:Interactive-animation
    项目PMO工作
    HDU 3340 Rain in ACStar(线段树+几何)
    再看数据库——(6)连接
    Android 安装应用后点击打开带来的问题
    Notes 和 Domino 已知限制
    去哪网实习总结:JavaWeb配置404页面(JavaWeb)
    Android 怎样实现 焦点图的 无线循环滑动的状态?
    【JNI探索之路系列】之七:JNI要点总结
  • 原文地址:https://www.cnblogs.com/muahao/p/5976939.html
Copyright © 2011-2022 走看看