您的位置:首页 > 其它

errno的基本用法

2015-06-17 10:23 183 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: