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

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

#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\n", errno); //用法2:使用perror函数,把error的值转化为有意义的字符提示。
if(errno != 0){
perror("opendir: ");
// exit(EXIT_FAILURE);
} //用法3:类似用法2,但使用strerror函数。
if(errno != 0){
printf("%s\n", strerror(errno));
exit(0);
} exit(0);
}

输出结果为:

2

opendir: : No such file or directory

No such file or directory

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

#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));
} 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

errno的基本用法的更多相关文章

  1. 附录二 C语言标准库

    上章回顾 数组和指针相同与不同 通过指针访问数组和通过数组访问指针 指针在什么时候可以加减运算 函数指针的申明和调用 函数数组和数组函数 git@github.com:Kevin-Dfg/Data-S ...

  2. errno的用法

    Linux中系统调用的错误都存储于 errno中,errno由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误. 编程时需要包含#include <errno.h>, ...

  3. awk 用法(使用入门)

    转自:http://www.cnblogs.com/emanlee/p/3327576.html awk 用法:awk ' pattern {action} '  变量名    含义 ARGC   命 ...

  4. PHP错误处理函数set_error_handler()的用法

    定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数. 该函数用于创建运行时期间的用户自己的错误处理方法. 该函数会返回旧的错误处理程序,若失败,则返回 null. 语 ...

  5. C语言中system()函数的用法总结(转)

    system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: #include <sys/types.h> #include <sys/wait ...

  6. sscanf,sscanf_s及其相关用法

    #include<stdio.h> 定义函数 int sscanf (const char *str,const char * format,........); 函数说明  sscanf ...

  7. awk用法

    目前虽然有很多工具可以代替awk,但是呢我还是认为awk还是非常重要,比如有时候load数据到hive,mysql发现数据有点问题,这样可以先对比文件和库中数据是否一致,这样awk就发挥用处了,还有从 ...

  8. epoll函数与参数总结学习 & errno的线程安全

    select/poll被监视的文件描述符数目非常大时要O(n)效率很低:epoll与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以 ...

  9. [转]ORACLE的ProC用法讲解

    pro*c是高级的用法,OCI是oracle的基础用法 如何编译.pc文件: proc code=cpp  parse=none iname=filename.pc oname=filename.cp ...

随机推荐

  1. php中strstr、strrchr、substr、stristr四个函数的区别总结

    php中strstr.strrchr.substr.stristr四个函数的区别总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-09-22我要评论 这篇文章主要介绍了php ...

  2. html.css随便记

    css 绝对定位:一个元素绝对定位时,浏览器首先将它从流中完全删除,然后浏览器再把这个元素放在属性指定的位置上,对其他元素没有影响   绝对定位要相对于最近的父级元素进行定位 position: ab ...

  3. iOS UILabel UITextView UIButton 等等显示文本行间距

    iOS UILabel  UITextView UIButton 等等显示文本行间距都用如下方法 NSMutableParagraphStyle *paragraphStyle = [[NSMutab ...

  4. jQuery限制文本框只能输入正整数

    //限制键盘只能按数字键.小键盘数字键.退格键 $("#txtQty").keydown(function (e) { var code = parseInt(e.keyCode) ...

  5. RegexOptions.Compiled性能

    原文:http://www.cnblogs.com/me-sa/archive/2010/05/19/Is-RegexOptions-Compiled-a-Killer.html "使用正则 ...

  6. 第一次用IIS发布网站时遇到的两个问题

    1.  配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 无法识别的属性“targetFramework”.请注意属性 ...

  7. asp.net mvc 页面缓存

    在任务中需要实现点击浏览器back按钮,加载的前一页面需要强制刷新. 想要在前端通过js来绑定数据实现,但是觉得太麻烦,还是用另一种方式来解决: 不缓存该页面. 简单易懂: Response.Cach ...

  8. Sql Server根据表名获得所有列及其属性

    select a.name columnname,c.name as typename,case when a.is_nullable =0 then 'Not Null' else 'Null' e ...

  9. 《第一行代码》学习笔记29-内容提供器Content Provider(2)

    1.查询操作: if (cursor != null) { while (cusor.moveToNext()) { String column1 = cursor.getString(cursor. ...

  10. arc engine - IName

    IName对象是一个代表性对象.通过使用IName对象,可以访问它所代表的对象的一些基本属性,而不用将整个对象调入内存.我们用IWorkspace 获得一个Workspace,那可是会调入内存的,而I ...