c++ 错误号errno
认识errno
errno定义于头文件<cerrno> <errno.h> errno 是用于错误指示的预处理器宏。它展开成一个静态 (C++11 前)线程局域 (C++11 起)的 int 类型可修改左值。
数个标准库函数通过写入正整数到 errno 指示错误。 errno 的值被典型地设置为作为列于 <cerrno> 的,以字母 E 起始,后随大写字母或数字的宏常量。
程序启动时 errno 的值为 0 ,而且尽管不管在错误发生与否时,允许写入正整数到 errno ,库函数决不会存储 0 于 errno
常见错误码
c++11为了减少平台差异匹配了POSIX错误码中的大多数具体标准c的请参见<errno.h>文件及包含部分,有些可能是平台扩展的linux可以参照 man errno(3)
E2BIG (C++11) //参数列表过长
EACCES (C++11) //权限被禁止
EADDRINUSE (C++11) //地址在使用中
EADDRNOTAVAIL (C++11) //地址不可用
EAFNOSUPPORT (C++11) //不支持地址系列
EAGAIN (C++11) //资源不可用,须重试
EALREADY (C++11) //连接已在进行
EBADF (C++11) //坏的的文件描述符
EBADMSG (C++11) //坏的消息
EBUSY (C++11) //设备或资源忙
ECANCELED (C++11) //操作取消
ECHILD (C++11) //无子进程
ECONNABORTED (C++11) //连接被打断
ECONNREFUSED (C++11) //连接被拒绝
ECONNRESET (C++11) //连接被重置
EDEADLK (C++11) //资源死锁会发生
EDESTADDRREQ (C++11) //要求目标地址
EDOM 数学参数在函数定义域外
EEXIST (C++11) //文件已存在
EFAULT (C++11) //坏的地址
EFBIG (C++11) //文件过大
EHOSTUNREACH (C++11) //主机不可抵达
EIDRM (C++11) //标识符被移除
EILSEQ (C++11) //非法字节序列
EINPROGRESS (C++11) //操作已在进行
EINTR (C++11) //函数被中断
EINVAL (C++11) //非法参数
EIO (C++11) //I/O 错误
EISCONN (C++11) //接头已连接
EISDIR (C++11) //是目录
ELOOP (C++11) //符号链接级别过多
EMFILE (C++11) //文件描述符值过大
EMLINK (C++11) //链接过多
EMSGSIZE (C++11) //消息过大
ENAMETOOLONG (C++11) //文件名过长
ENETDOWN (C++11) //网络不工作
ENETRESET (C++11) //连接被网络打断
ENETUNREACH (C++11) //网络不可抵达
ENFILE (C++11) //系统中打开文件过多
ENOBUFS (C++11) //无缓冲空间可用
ENODATA (C++11) //流头已读取队列中无消息
ENODEV (C++11) //无此设备
ENOENT (C++11) //无此文件或目录
ENOEXEC (C++11) //可执行文件格式错误
ENOLCK (C++11) //无可用锁
ENOLINK (C++11) //链接已切断
ENOMEM (C++11) //空间不足
ENOMSG (C++11) //无所需类型消息
ENOPROTOOPT (C++11) //协议不可用
ENOSPC (C++11) //设备无剩余空间
ENOSR (C++11) //无流资源
ENOSTR (C++11) //非流
ENOSYS (C++11) //不支持的函数
ENOTCONN (C++11) //未连接的接头
ENOTDIR (C++11) //非目录
ENOTEMPTY (C++11) //目录非空
ENOTRECOVERABLE (C++11) //状态不可恢复
ENOTSOCK (C++11) //非接头
ENOTSUP (C++11) //不支持
ENOTTY (C++11) //不适合的 I/O 控制操作
ENXIO (C++11) //无此设备或地址
EOPNOTSUPP (C++11) //接头上不支持的操作
EOVERFLOW (C++11) //值过大而无法存入数据类型
EOWNERDEAD (C++11) //先前拥有者已死
EPERM (C++11) //操作不允许
EPIPE (C++11) //管道损坏
EPROTO (C++11) //协议错误
EPROTONOSUPPORT (C++11) //不支持的协议
EPROTOTYPE (C++11) //接头类型错误的协议
ERANGE 结果过大
EROFS (C++11) //只读文件系统
ESPIPE (C++11) //非法寻位
ESRCH (C++11) //无此进程
ETIME (C++11) //流 ioctl() 超时
ETIMEDOUT (C++11) //连接超时
ETXTBSY (C++11) //文本文件忙
EWOULDBLOCK (C++11) //操作会阻塞
EXDEV (C++11) //跨设备链接
错误处理函数
/**
打印当前存储于系统变量 errno 的错误码到 stderr1. 如果s为空指针或s所指向字符为空字符 则直接输出错误消息。负责为s:错误消息2. 描述存储于errno的错误码的错误消息字符串后随 '\n'
*/
void perror( const char *s );//stdio.h
/**
返回指向系统错误码 errnum 的文本表示的指针,它等同于 std::perror() 会打印的描述
通常从 errno 对象获得 errnum ,不过函数接受任何 int 类型值。字符串的内容是本地环境限定的。
程序必须不修改返回的字符串,但对 strerror 函数的后继调用可能重写该字符串。
不要求 strerror 为线程安全。实现可以返回指向静态只读字符串字面量的不同指针,
或反复返回指向静态缓冲区的同一指针而 strerror 于该缓冲区中放置字符串
*/
char* strerror( int errnum );//string.h
同strerror只不过缓冲区由用户指定POSIX有int strerror_r(int errnum, char *strerrbuf, size_t buflen);
errno_t strerror_s( char *buf, rsize_t bufsz, errno_t errnum );//string.h[c++11]
示例
#include <stdio.h>
#include <errno.h>
#include <string.h>int main()
{errno = ENOSPC;perror(NULL);perror("");perror("test");printf("%s\n", strerror(errno));char err_buf[200] = { 0 };strerror_s(err_buf,200, errno);printf("%s\n", err_buf);getchar();return 0;
}
示例结果
No space left on device
No space left on device
test: No space left on device
No space left on device
No space left on device
c++ 错误号errno相关推荐
- 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error ;U盘安装Ubuntu18.04.1遇到错误
U盘安装Ubuntu18.04.1遇到错误: 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error : 这通常是由于CD/DVD盘片或者驱动器有问题,或者硬盘错误造成的 ...
- linux socket错误提示errno分析
参考链接:http://aigo.iteye.com/blog/1911134 参考链接:https://baike.baidu.com/item/errno/11040395?fr=aladdin ...
- mysql 错误号1005_mysql - 错误代码:1005。无法创建表'...'(错误号:150)
mysql - 错误代码:1005.无法创建表'...'(错误号:150) 我在互联网上搜索了这个问题的解决方案并检查了SO问题,但没有解决方案适用于我的情况. 我想从表sira_no到metal_k ...
- linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.
所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...
- Ubuntu 13.10 安装软件失败后出现的问题——已安装 post-installation 脚本 返回了错误号 1...
安装Oracle-java7-installer失败后,再次重新安装后出现错误-- dpkg: error processing oracle-java7-installer (--configure ...
- 【错误归纳】E: Sub-process /usr/bin/dpkg returned an error code (1)子进程 已安装 post-installation 脚本 返回了错误号 1
问题描述 我在使用apt-get install 安装某个程序的时候出现了下面的错误提示: 正在设置 anydesk (5.1.1) ...System start/stop links for /e ...
- 子进程 已安装 post-installation 脚本 返回了错误号 1
子进程 已安装 post-installation 脚本 返回了错误号 1 //现将info文件夹更名 sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_ol ...
- WinAPI: waveOutGetErrorText - 根据错误号得到错误描述
为什么80%的码农都做不了架构师?>>> 提示: 错误文本的长度一般不超过 MAXERRORLENGTH = 128; 如果缓冲区太小, 文本会被截断. //声明: waveO ...
- 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’
如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案 ...
最新文章
- [开发工具]JBuilder2008已经发布
- 【深度学习】用Pytorch给你的母校做一个样式迁移吧!
- 机器学习自主解决安全威胁离我们还有多远?
- 【总结】C# 线程同步技术(一)之 Join 方法
- 想赚钱?先把底层逻辑搞清楚
- python 复习计划
- 中兴f460光猫资料
- 吊打天猫精灵等“本土”智能音箱,HomePod做得到吗?...
- Android 白天黑夜模式切换适配及引起的Activity销毁重启解决
- ios swift判断两个对象是否相等 == isEqual remove add
- Java爬虫之利用Jsoup+HttpClient爬取类叔叔不约匿名聊天网站的图片,未果——后爬取某网站美女图片案例
- 全栈开发-IDE介绍与设置、字符串格式化、数据类型、for循环
- Jenkins 部署项目出现 Failed to connect to repository : Command git ls-remote -h http://gitlab. 128
- [C#] 内存占用释放
- STM32F4学习笔记1
- 参考一:双缝干涉与波长测量
- Vue中阿拉伯数字与汉字的相互转换
- 无人叉车市场现状与发展趋势分析|无人叉车专题(一)
- [附源码]计算机毕业设计JAVA汽车租赁管理系统论文
- Zemax操作36--一个选择初始结构的例子