• linux errno用法


    转自:https://blog.csdn.net/jediael_lu/article/details/8589194;https://www.cnblogs.com/Jimmy1988/p/7485133.html

    errno简介

    Linux中系统调用的错误都存储于errno中,errno由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误。

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

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

    PS: 只有当系统调用或者调用lib函数时出错,才会置位errno!

    erron用法示例

    #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

    查看系统中所有的errno所代表的含义

    #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
  • 相关阅读:
    最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现
    动态规划算法(后附常见动态规划为题及Java代码实现)
    2个字符串的最长公共子串
    VS2010常用快捷键
    错误代码errno值的含义
    几个常用I/O函数用法(printf,fprintf等)
    查看CPU位数的方法
    关于函数指针的总结
    日本标点符号的输入总结
    共享内存及信号量的几个函数介绍
  • 原文地址:https://www.cnblogs.com/cydcyd/p/13906477.html
Copyright © 2020-2023  润新知