errno的基本用法

原文地址:http://blog.csdn.net/jediael_lu/article/details/8589194


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

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

[cpp]  view plain copy
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <dirent.h>  
  4. #include <errno.h>  
  5. #include <string.h>  
  6.   
  7. int main(void){  
  8.     extern int errno;  
  9.   
  10.     errno=0;  
  11.     opendir("/home/kkk");  
  12. //用法1:直接读取errno的值  
  13.     printf("%d\n", errno);  
  14.   
  15. //用法2:使用perror函数,把error的值转化为有意义的字符提示。  
  16.     if(errno != 0){  
  17.         perror("opendir: ");  
  18. //        exit(EXIT_FAILURE);  
  19.     }  
  20.   
  21. //用法3:类似用法2,但使用strerror函数。  
  22.     if(errno != 0){  
  23.         printf("%s\n", strerror(errno));  
  24.         exit(0);  
  25.     }  
  26.   
  27.   
  28.     exit(0);  
  29. }  
输出结果为:

2
opendir: : No such file or directory
No such file or directory


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

[cpp]  view plain copy
  1. #include <stdio.h>  
  2. #include <errno.h>  
  3. #include <stdlib.h>  
  4. #include <string.h>  
  5.   
  6. int main(void){  
  7.   
  8.     for(int i = 0; i < 140; i++){  
  9.         printf("%4d:%s\n", i, strerror(i));  
  10.     }  
  11.   
  12.     exit(0);  
  13. }  

输出结果如下:

   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


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据你提供的引用信息,错误信息 "PermissionError: [Errno 13] Permission denied: 'result\\rpc'" 是由于权限被拒绝而导致的。在Linux中,每个应用程序都有一个应用属主的概念,这个错误通常是由于应用程序的应用属主没有访问指定路径的权限导致的。 要解决这个问题,有几个可能的方法。首先,你可以检查代码中读取路径的地方,确保它指向正确的路径。如果路径是正确的,但是应用属主没有访问该路径的权限,你可以考虑更改文件或目录的权限,以允许应用属主访问它。你可以使用chmod命令来更改文件或目录的权限,例如"chmod +rwx filename"可以赋予文件读、写和执行的权限。 另外,你还可以考虑更改应用程序的应用属主,使其具有访问指定路径的权限。你可以使用chown命令来更改文件或目录的所有者,例如"chown new_owner filename"可以将文件的所有者更改为new_owner。 总之,错误信息 "PermissionError: [Errno 13] Permission denied: 'result\\rpc'" 表示应用程序的应用属主没有访问指定路径的权限。你可以检查代码中的路径是否正确,并更改文件或目录的权限或所有者来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【计算机网络】1、网络基本概念:ip | netmask | gateway、TCP | UDP | 本地 socket 编程](https://blog.csdn.net/jiaoyangwm/article/details/128550594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [labelme批量转化json文件时PermissionError: [Errno 13] Permission denied](https://download.csdn.net/download/qq_40957277/22331121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值