在Linux文件操作以及更底层的IO操作出错的情况下,经常会为该如何返回合适的错误代码而纠结。另外在阅读代码的时候,可能会碰到很多种错误代码,因为不明白它的含义而迷惑。为此,有必要归纳整理一下常见的所有的出错代码及其对应的含义,既方便阅读代码时参考,又便于自己正确选用。

显然因为这些代码大都处在用户态,可能会有多个进程或者线程会用到它,因此通常把它们归纳一起放在同一个头文件里。在笔者的Linux中系统中,目前用到的宏的定义在下面的头文件里:

/usr/include/asm-generic/errno-base.h:

#ifndef

_ASM_GENERIC_ERRNO_BASE_H

#define

_ASM_GENERIC_ERRNO_BASE_H

#define

EPERM        1  /* Operation not permitted */

#define

ENOENT       2  /* No such file or directory */

#define

ESRCH        3  /* No such process */

#define

EINTR        4  /* Interrupted system call */

#define

EIO      5  /* I/O error */

#define

ENXIO        6  /* No such device or address */

#define

E2BIG        7  /* Argument list too long */

#define

ENOEXEC      8  /* Exec format error */

#define

EBADF        9  /* Bad file number */

#define

ECHILD      10  /* No child processes */

#define

EAGAIN      11  /* Try again */

#define

ENOMEM      12  /* Out of memory */

#define

EACCES      13  /* Permission denied */

#define

EFAULT      14  /* Bad address */

#define

ENOTBLK     15  /* Block device required */

#define

EBUSY       16  /* Device or resource busy */

#define

EEXIST      17  /* File exists */

#define

EXDEV       18  /* Cross-device link */

#define

ENODEV      19  /* No such device */

#define

ENOTDIR     20  /* Not a directory */

#define

EISDIR      21  /* Is a directory */

#define

EINVAL      22  /* Invalid argument */

#define

ENFILE      23  /* File table overflow */

#define

EMFILE      24  /* Too many open files */

#define

ENOTTY      25  /* Not a typewriter */

#define

ETXTBSY     26  /* Text file busy */

#define

EFBIG       27  /* File too large */

#define

ENOSPC      28  /* No space left on device */

#define

ESPIPE      29  /* Illegal seek */

#define

EROFS       30  /* Read-only file system */

#define

EMLINK      31  /* Too many links */

#define

EPIPE       32  /* Broken pipe */

#define

EDOM        33  /* Math argument out of domain of func */

#define

ERANGE      34  /* Math result not representable */

此外,/usr/include/asm-generic/errno.h还有一部分常用到的出错代码在这里定义,可以看到它和上面定义的错误代码的代码是统一编号的。

#ifndef

_ASM_GENERIC_ERRNO_H

#define

_ASM_GENERIC_ERRNO_H

#include

#define

EDEADLK     35  /* Resource deadlock would occur */

#define

ENAMETOOLONG    36  /* File name too long */

#define

ENOLCK      37  /* No record locks available */

#define

ENOSYS      38  /* Function not implemented */

#define

ENOTEMPTY   39  /* Directory not empty */

#define

ELOOP       40  /* Too many symbolic links encountered */

#define

EWOULDBLOCK EAGAIN  /* Operation would block */

#define

ENOMSG      42  /* No message of desired type */

#define

EIDRM       43  /* Identifier removed */

#define

ECHRNG      44  /* Channel number out of range */

#define

EL2NSYNC    45  /* Level 2 not synchronized */

#define

EL3HLT      46  /* Level 3 halted */

#define

EL3RST      47  /* Level 3 reset */

#define

ELNRNG      48  /* Link number out of range */

#define

EUNATCH     49  /* Protocol driver not attached */

#define

ENOCSI      50  /* No CSI structure available */

#define

EL2HLT      51  /* Level 2 halted */

#define

EBADE       52  /* Invalid exchange */

#define

EBADR       53  /* Invalid request descriptor */

#define

EXFULL      54  /* Exchange full */

#define

ENOANO      55  /* No anode */

#define

EBADRQC     56  /* Invalid request code */

#define

EBADSLT     57  /* Invalid slot */

#define

EDEADLOCK   EDEADLK

#define

EBFONT      59  /* Bad font file format */

#define

ENOSTR      60  /* Device not a stream */

#define

ENODATA     61  /* No data available */

#define

ETIME       62  /* Timer expired */

#define

ENOSR       63  /* Out of streams resources */

#define

ENONET      64  /* Machine is not on the network */

#define

ENOPKG      65  /* Package not installed */

#define

EREMOTE     66  /* Object is remote */

#define

ENOLINK     67  /* Link has been severed */

#define

EADV        68  /* Advertise error */

#define

ESRMNT      69  /* Srmount error */

#define

ECOMM       70  /* Communication error on send */

#define

EPROTO      71  /* Protocol error */

#define

EMULTIHOP   72  /* Multihop attempted */

#define

EDOTDOT     73  /* RFS specific error */

#define

EBADMSG     74  /* Not a data message */

#define

EOVERFLOW   75  /* Value too large for defined data type */

#define

ENOTUNIQ    76  /* Name not unique on network */

#define

EBADFD      77  /* File descriptor in bad state */

#define

EREMCHG     78  /* Remote address changed */

#define

ELIBACC     79  /* Can not access a needed shared library */

#define

ELIBBAD     80  /* Accessing a corrupted shared library */

#define

ELIBSCN     81  /* .lib section in a.out corrupted */

#define

ELIBMAX     82  /* Attempting to link in too many shared libraries */

#define

ELIBEXEC    83  /* Cannot exec a shared library directly */

#define

EILSEQ      84  /* Illegal byte sequence */

#define

ERESTART    85  /* Interrupted system call should be restarted */

#define

ESTRPIPE    86  /* Streams pipe error */

#define

EUSERS      87  /* Too many users */

#define

ENOTSOCK    88  /* Socket operation on non-socket */

#define

EDESTADDRREQ    89  /* Destination address required */

#define

EMSGSIZE    90  /* Message too long */

#define

EPROTOTYPE  91  /* Protocol wrong type for socket */

#define

ENOPROTOOPT 92  /* Protocol not available */

#define

EPROTONOSUPPORT 93  /* Protocol not supported */

#define

ESOCKTNOSUPPORT 94  /* Socket type not supported */

#define

EOPNOTSUPP  95  /* Operation not supported on transport endpoint */

#define

EPFNOSUPPORT    96  /* Protocol family not supported */

#define

EAFNOSUPPORT    97  /* Address family not supported by protocol */

#define

EADDRINUSE  98  /* Address already in use */

#define

EADDRNOTAVAIL   99  /* Cannot assign requested address */

#define

ENETDOWN    100 /* Network is down */

#define

ENETUNREACH 101 /* Network is unreachable */

#define

ENETRESET   102 /* Network dropped connection because of reset */

#define

ECONNABORTED    103 /* Software caused connection abort */

#define

ECONNRESET  104 /* Connection reset by peer */

#define

ENOBUFS     105 /* No buffer space available */

#define

EISCONN     106 /* Transport endpoint is already connected */

#define

ENOTCONN    107 /* Transport endpoint is not connected */

#define

ESHUTDOWN   108 /* Cannot send after transport endpoint shutdown */

#define

ETOOMANYREFS    109 /* Too many references: cannot splice */

#define

ETIMEDOUT   110 /* Connection timed out */

#define

ECONNREFUSED    111 /* Connection refused */

#define

EHOSTDOWN   112 /* Host is down */

#define

EHOSTUNREACH    113 /* No route to host */

#define

EALREADY    114 /* Operation already in progress */

#define

EINPROGRESS 115 /* Operation now in progress */

#define

ESTALE      116 /* Stale file handle */

#define

EUCLEAN     117 /* Structure needs cleaning */

#define

ENOTNAM     118 /* Not a XENIX named type file */

#define

ENAVAIL     119 /* No XENIX semaphores available */

#define

EISNAM      120 /* Is a named type file */

#define

EREMOTEIO   121 /* Remote I/O error */

#define

EDQUOT      122 /* Quota exceeded */

#define

ENOMEDIUM   123 /* No medium found */

#define

EMEDIUMTYPE 124 /* Wrong medium type */

#define

ECANCELED   125 /* Operation Canceled */

#define

ENOKEY      126 /* Required key not available */

#define

EKEYEXPIRED 127 /* Key has expired */

#define

EKEYREVOKED 128 /* Key has been revoked */

#define

EKEYREJECTED    129 /* Key was rejected by service */

/*

for robust mutexes */

#define

EOWNERDEAD  130 /* Owner died */

#define

ENOTRECOVERABLE 131 /* State not recoverable */

#define

ERFKILL     132 /* Operation not possible due to RF-kill */

#define

EHWPOISON   133 /* Memory page has hardware error */

通过上面列举出来的所有文件和IO操作相关的错误代码可以看到,种类很多,数量不小,在我们实际的工程项目中,必须结合具体业务场景选则合适的错误代码,既要保证代码的含义和真是场景吻合,又要避免在不同的场景中使用了相同的错误代码。

linux错误码5 io error,IO出错常用错误代码相关推荐

  1. 微信小程序服务器错误错误码404,微信小程序 云开发 错误代码 大全

    微信小程序 云开发 错误代码 大全 发布时间:2019-11-12编辑:三思 转载 阅读(1542) 以下记录的是微信小程序 云开发常出现的错误. 错误码               含义 -1通用错 ...

  2. linux错误码分析

    22:参数错误,比如ip地址不合法,没有目标端口等 101:网络不可达,比如不能ping通 111:链接被拒绝,比如目标关闭链接等 115:当链接设置为非阻塞时,目标没有及时应答,返回此错误,sock ...

  3. linux错误码中文解释,Linux命令之perror - 解释错误代码

    用途说明: perror命令是MySQL数据库系统中的一个工具程序,它用于打印C语言中errno错误代码的含义.也可以打印MySQL中存储引擎错误代码的含义.(perror prints a desc ...

  4. linux错误码61,Linux编程中的错误码列表

    有时可以知道错误的数值,但是如果不知道对应于那个宏定义,也很难知道这个错误描述的是什么.我平时这两种方法来确定:在内核源码中搜索和查看头文件. 在内核源码中搜索一般都可以搜到,而且使用source i ...

  5. mysql错误码2002_MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket

    在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (HY000): Can't connect to local MySQL se ...

  6. Mysql安装错误码1722_软件error 1771, error1722,error 1723解决办法

    windows系统错误信息,error 1771, error1722, error1723的解决方案. 可能很多windows7 用户遇到过类似问题,在安装软件过程中或者其他操作过程中会出现如下错误 ...

  7. linux 错误码256,Linux 错误码对照表

    errno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的  errno-base.h 和 errno.h,分别定义了 1-34 .35-132 ...

  8. 微信支付curl出错及错误码解决方案

    关键字:微信支付 curl出错 错误码6 错误码7 错误码28 错误码52 错误码58 错误码60 错误码77  作者:方倍工作室 原文: http://www.cnblogs.com/txw1958 ...

  9. MySQL常见错误码

    2019独角兽企业重金招聘Python工程师标准>>> 自建MySQL环境主机 主机:iZbp1e*****krn92qrx0Z 内网ip: 10.26.254.217 客户端ecs ...

最新文章

  1. Http压测工具wrk使用指南【转】
  2. 安卓界面之Viewpager和Tablayout实现滑动界面
  3. python邮件正文表格怎么编辑_python怎么把excel写到邮件里
  4. sklearn机器学习实例
  5. design php 如何使用ant_Ant Design Pro如何调用接口 | Ant Design Pro渲染数据 绑定数据...
  6. Java多线程编程实战(读书笔记)
  7. layui table 表格两种赋值方式下,data分页效果有效, url分页效果的失效 问题的解决。
  8. 云擎供应链:为中小仓库提供SaaS供应链解决方案
  9. LINUX虚拟机与WINDOWS主机,直接复制交换文件会有问题
  10. hadoop-06-http服务
  11. 中国的码农们,沉睡了20年,该醒醒了
  12. jsonp的原理与实现
  13. Word的样式库在 选项卡中_word排版应用:如何创建文本样式和表格样式
  14. 图像修复神器!带上口罩都能还原!DDPM:用去噪扩散概率模型极限修复图像,效果太牛了!...
  15. 手机内存卡丢失数据怎么恢复
  16. 如何禁用笔记本触摸板
  17. python文件下载战_在您的Python平台游戏中放一些战利品
  18. Pytorch----卷积神经网络(CNN,图像边缘检测 , Sobel滤波器 , Scharr滤波器)--入门级小实例(逐行注释)---学习笔记
  19. python打印自动换行如何解决,python不换行打印的方法
  20. 一些实用的零零散散的知识

热门文章

  1. 如何解iOS系统中系统库的dyld缓存
  2. 破解芝诺悖论之阿基里斯追乌龟
  3. python argsort函数_Python numpy.argsort函数方法的使用
  4. 【校园商铺 4章】:店铺注册--Service层的实现(后期还要改造,先前没实现)
  5. 第七章 弗洛格老师
  6. python入门的兴趣学习
  7. bugku:misc可爱的故事
  8. maya mel uf8_新手入门Maya mel要注意的 8个细节
  9. 基于IoT全链路实时质量 - 魔洛哥
  10. sketchup边线设置_SketchUp中隐藏后边线的操作教程