首页 > 其他分享 >error使用

error使用

时间:2023-12-11 14:13:34浏览次数:21  
标签:No errno error Unknown file 使用 include

来自:https://www.cnblogs.com/schips/p/12505021.html

Linux 环境编程:errno的基本用法

 

背景

error是一个包含在<errno.h>中的预定义的外部int变量,用于表示最近一个函数调用是否产生了错误。若为0,则无错误,其它值均表示一类错误。
errno只在函数返回错误时才有意义,当函数执行正常返回时并不会重置errno,因此此时的errno是不能作为错误处理的。所以在有些时候需要清理error。

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

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>
 
int main(void){

    opendir("/tmp/no_exist");
    //用法1:直接读取errno的值
    printf("errno = %d\n", errno);
 
    //用法2:使用perror函数,把error的值转化为有意义的字符提示。
    if(errno != 0){
        perror("opendir: ");
        // exit(EXIT_FAILURE);
    }
    // 补充一个可以 格式化打印的 
    fprintf(stderr, "[%s] %s\n", "opendir", strerror(errno)); 

    //用法3:类似用法2,但使用strerror函数。
    if(errno != 0){
        printf("%s\n", strerror(errno));
        exit(0);
    }
 
 
    exit(0);
}

输出结果为:

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

以下程序用于显示所有的错误代码含义

#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\n", i, strerror(i));
    }
 
    return 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 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:Memory page has hardware error
 134:Unknown error 134
 135:Unknown error 135
 136:Unknown error 136
 137:Unknown error 137
 138:Unknown error 138
 139:Unknown error 139

标签:No,errno,error,Unknown,file,使用,include
From: https://www.cnblogs.com/rebrobot/p/17894254.html

相关文章

  • java-selenium 使用固定版本chrome浏览器和chromedriver,解决chrome自动升级无法与Chro
    1、获取Googlechrome、chromedriver地址:https://googlechromelabs.github.io/chrome-for-testing/ 2、将2个压缩包解压,存放到固定目录比如我的chromedriver位置为:D:\file\jar\chromeDriver120\chromedriver.exechrome位置为:D:\\soft\\chrome120\\chrome.exe3、代码中......
  • 简述一下Spring的两大特性(概念,使用范围。作用等方面简单的阐述
    简述一下Spring的两大特性(概念,使用范围。作用等方面简单的阐述1.控制反转(IoC,InversionofControl):概念:控制反转是Spring框架的核心概念,它指的是将对象的创建、组装和管理的控制权从应用程序代码中反转到Spring容器中。在传统的开发模式中,程序员负责直接创建和管理对象,而在......
  • MapStruct使用指南以及原理解析
    使用指南:https://juejin.cn/post/6956190395319451679原理解析:https://blog.csdn.net/begefefsef/article/details/1264349501.MapStruct原理是一个Java注解处理器,它基于编译时代码生成的原理,用于自动化Javabean类型之间的映射工作。以下是MapStruct的工作原理的详细解读:注......
  • Linux学习36- python3.9出现ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+
    遇到问题python3.9上安装requests库,requests包引入了urllib3,而新版本v2.x的urllib3需要OpenSSL1.1.1+以上版本所以就出现了报错File"/root/python39/lib/python3.9/site-packages/_pytest/assertion/rewrite.py",line186,inexec_moduleexec(co,module.__dict__......
  • 使用Flink完成流数据统计 | 京东云技术团队
    一、统计流程所有流计算统计的流程都是:1、接入数据源2、进行多次数据转换操作(过滤、拆分、聚合计算等)3、计算结果的存储其中数据源可以是多个、数据转换的节点处理完数据可以发送到一个和多个下一个节点继续处理数据Flink程序构建的基本单元是stream和transformation(DataSet实质......
  • react-query使用
    usequery const{isPending,isLoading,error,data}=useQuery({//返回当前请求的状态,错误信息,以及返回的数据queryKey:['repoData'],//【必填】,自定义查询的键,类型为数组,也可以存放变量,[repoData,id],当id发生变化时,会自动请求接口queryFn:()=>//......
  • Linux学习35- python3.9出现ModuleNotFoundError: No module named '_ctypes'的解决
    遇到问题pip安装第三方库的时候报错ModuleNotFoundError:Nomodulenamed'_ctypes'File"/usr/local/python3/lib/python3.9/ctypes/__init__.py",line7,in<module>from_ctypesimportUnion,Structure,ArrayModuleNotFoundError:Nomodulen......
  • access 类对象使用
    类模块代码如下:OptionExplicit'定义按钮对象和onclick触发内容PrivateWithEventsm_ClosebtnAsAccess.CommandButtonConstfEventsAsString="[EventProcedure]"'定义触发方式(access需要有此才能触发click动作,否则无效,也不会报错)'PublicSubInitCls(frmAsAcce......
  • Oracle切换undo后如何确定使用旧undo的会话信息
     Oracle切换undo后如何确定使用旧undo的会话信息 背景是这样的,最近RAC的磁盘组90%报警,存储空间只能再加2T空间。而这套RAC的DATA组用了normal冗余,不知道当初哪个大聪明这么搞的,底层还是做了RAID10的。领导也不知道不懂这么设置的。因此,这新的2T创建新磁盘组且使用extern......
  • Notepad++使用技巧
    目录1.目的2.修改默认的缩进:tab改为空格3.显示tab和空格Created:2023-12-1110:22:34LastUpdate:2023-12-1110:22:381.目的在Windows上使用Notepad++作为轻量级编辑器。例如编辑markdown文件,查看程序的log,临时打开的未命名、未保存文件。2.修改默认的缩......