[Reprinted] socket error codes in Linux: errno, socketerrno

Source: Internet
Author: User
Tags socket error socket error codes connection reset

[Reprinted] socket error codes in Linux: errno, socketerrno

Http://blog.chinaunix.net/xmlrpc.php? R = blog/article & uid = 116213 & id = 3376727

 

Recently, in network programming, errno is often used. Therefore, we decided to keep it for future use...

Although errno is non-thread-safe, it can be ensured through several mechanisms ..

In the recent use process, errno is obtained, and the program cannot be executed, and you do not know how to solve the problem. Therefore, it is important to understand the meaning of each returned errno integer ..

This can be achieved through the strerror function ..

Strerror (returns the description string of the error cause corresponding to the integer errno)

Required header file: # include
Function declaration: char * strerror (int errnum );

Input: integer errno

Output: returns the string pointer that describes the cause of the error.
Function: Used to query the description string of the error cause based on the error code of the errnum parameter, and then return the string pointer.
Example:
# Include
# Include

# Deprecision NUM 150
Int main (void)
{
Int I;
For (I = 0; I <num; I ++ = "") <br = ""> {
Printf ("% d: % s \ n", I, strerror (I ));
}
Return 0;
}

Running result:

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 program open files in system
24: Too program 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 successfully upted shared library
81:. lib section in a. out specified upted
82: Attempting to link in too tables shared libraries
83: Cannot exec a shared library directly
84: Invalid or incomplete multibyte or wide character
85: Interrupted system call shocould be restarted
86: Streams pipe error
87: Too extends 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: The 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 required 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: Unknown error 132
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
140: Unknown error 140
141: Unknown error 141
142: Unknown error 142
143: Unknown error 143
144: Unknown error 144
145: Unknown error 145
146: Unknown error 146
147: Unknown error 147
148: Unknown error 148
149: Unknown error 149

Through this, we finally understand the meaning of errno .. A non-blocking connect crawler made on that day does not work well in any case and does not know how to solve the problem. The program does not have a segment error and finally exits when it is positioned as a write socket, this socket can be written through FD_ISSET, so I don't know how to solve it. By capturing the errno value, it is found that it is 104. if I knew at the time that errno = 104 meant "Connection reset by peer", then I knew that the Web Crawler client needed to increase the processing of SIGPIPE signals .. Because SIGPIPE exits by default, you can add a signal processing function by yourself or ignore it...

Therefore, listing this information can be helpful and convenient for future queries.

1 # ifndef _ ASM_GENERIC_ERRNO_BASE_H
2 # define _ ASM_GENERIC_ERRNO_BASE_H
3
4 # define EPERM 1/* Operation not permitted */
5 # define ENOENT 2/* No such file or directory */
6 # define ESRCH 3/* No such process */
7 # define EINTR 4/* Interrupted system call */
8 # define EIO 5/* I/O error */
9 # define ENXIO 6/* No such device or address */
10 # define E2BIG 7/* Argument list too long */
11 # define ENOEXEC 8/* Exec format error */
12 # define EBADF 9/* Bad file number */
13 # define ECHILD 10/* No child processes */
14 # define EAGAIN 11/* Try again */
15 # define ENOMEM 12/* Out of memory */
16 # define EACCES 13/* Permission denied */
17 # define EFAULT 14/* Bad address */
18 # define ENOTBLK 15/* Block device required */
19 # define EBUSY 16/* Device or resource busy */
20 # define EEXIST 17/* File exists */
21 # define EXDEV 18/* Cross-device link */
22 # define ENODEV 19/* No such device */
23 # define ENOTDIR 20/* Not a directory */
24 # define EISDIR 21/* Is a directory */
25 # define EINVAL 22/* Invalid argument */
26 # define ENFILE 23/* File table overflow */
27 # define EMFILE 24/* Too program open files */
28 # define ENOTTY 25/* Not a typewriter */
29 # define ETXTBSY 26/* Text file busy */
30 # define EFBIG 27/* File too large */
31 # define ENOSPC 28/* No space left on device */
32 # define ESPIPE 29/* Illegal seek */
33 # define EROFS 30/* Read-only file system */
34 # define EMLINK 31/* Too shortlinks */
35 # define EPIPE 32/* Broken pipe */
36 # define EDOM 33/* Math argument out of domain of func */
37 # define ERANGE 34/* Math result not representable */
38
39 # endif

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.