linux的errno返回值含義

逆向linux樣本遇到一個函數

linux中關於errno

1)errno是一個整型變量,當系統調用和一些庫函數發生錯誤時會通過設置errno的值來告訴調用者出了什麼問題。
2)errno的有效值都是非零的。(這個manpage有個悖論,第二段中說,errno從來不能被設爲0,而在第三段又說有些接口會將其設置爲0)
3)errno在ISO C標準中定義的,它可能是一個宏並且不能被顯示聲明(也就是重新定義)。
4)errno是線程安全的,在一個線程中設置它,不會影響別的線程對它的使用。這一點很重要,不知道有沒有像我之前有過這樣的問題:看起來errno像是一個全局的變量,應該不是線程安全的吧?看了這個之後,就有答案了,errno是thread-local的,也就是每個線程都有一個。
2. errno的定義
errno被定義在/usr/include/bits/errno.h文件中:
 

#  if !defined _LIBC || defined _LIBC_REENTRANT
/* When using threads, errno is a per-thread value.  */
#   define errno (*__errno_location ())
#  endif
# endif /* !__ASSEMBLER__ */
#endif /* _ERRNO_H */

errno的解釋:

errno 0: Success
errno 1: Operation not permitted
errno 2: No such file or directory
errno 3: No such process
errno 4: Interrupted system call
errno 5: Input/output error
errno 6: No such device or address
errno 7: Argument list too long
errno 8: Exec format error
errno 9: Bad file descriptor
errno 10: No child processes
errno 11: Resource temporarily unavailable
errno 12: Cannot allocate memory
errno 13: Permission denied
errno 14: Bad address
errno 15: Block device required
errno 16: Device or resource busy
errno 17: File exists
errno 18: Invalid cross-device link
errno 19: No such device
errno 20: Not a directory
errno 21: Is a directory
errno 22: Invalid argument
errno 23: Too many open files in system
errno 24: Too many open files
errno 25: Inappropriate ioctl for device
errno 26: Text file busy
errno 27: File too large
errno 28: No space left on device
errno 29: Illegal seek
errno 30: Read-only file system
errno 31: Too many links
errno 32: Broken pipe
errno 33: Numerical argument out of domain
errno 34: Numerical result out of range
errno 35: Resource deadlock avoided
errno 36: File name too long
errno 37: No locks available
errno 38: Function not implemented
errno 39: Directory not empty
errno 40: Too many levels of symbolic links
errno 41: Unknown error 41
errno 42: No message of desired type
errno 43: Identifier removed
errno 44: Channel number out of range
errno 45: Level 2 not synchronized
errno 46: Level 3 halted
errno 47: Level 3 reset
errno 48: Link number out of range
errno 49: Protocol driver not attached
errno 50: No CSI structure available
errno 51: Level 2 halted
errno 52: Invalid exchange
errno 53: Invalid request descriptor
errno 54: Exchange full
errno 55: No anode
errno 56: Invalid request code
errno 57: Invalid slot
errno 58: Unknown error 58
errno 59: Bad font file format
errno 60: Device not a stream
errno 61: No data available
errno 62: Timer expired
errno 63: Out of streams resources
errno 64: Machine is not on the network
errno 65: Package not installed
errno 66: Object is remote
errno 67: Link has been severed
errno 68: Advertise error
errno 69: Srmount error
errno 70: Communication error on send
errno 71: Protocol error
errno 72: Multihop attempted
errno 73: RFS specific error
errno 74: Bad message
errno 75: Value too large for defined data type
errno 76: Name not unique on network
errno 77: File descriptor in bad state
errno 78: Remote address changed
errno 79: Can not access a needed shared library
errno 80: Accessing a corrupted shared library
errno 81: .lib section in a.out corrupted
errno 82: Attempting to link in too many shared libraries
errno 83: Cannot exec a shared library directly
errno 84: Invalid or incomplete multibyte or wide character
errno 85: Interrupted system call should be restarted
errno 86: Streams pipe error
errno 87: Too many users
errno 88: Socket operation on non-socket
errno 89: Destination address required
errno 90: Message too long
errno 91: Protocol wrong type for socket
errno 92: Protocol not available
errno 93: Protocol not supported
errno 94: Socket type not supported
errno 95: Operation not supported
errno 96: Protocol family not supported
errno 97: Address family not supported by protocol
errno 98: Address already in use
errno 99: Cannot assign requested address
errno 100: Network is down
errno 101: Network is unreachable
errno 102: Network dropped connection on reset
errno 103: Software caused connection abort
errno 104: Connection reset by peer
errno 105: No buffer space available
errno 106: Transport endpoint is already connected
errno 107: Transport endpoint is not connected
errno 108: Cannot send after transport endpoint shutdown
errno 109: Too many references: cannot splice
errno 110: Connection timed out
errno 111: Connection refused
errno 112: Host is down
errno 113: No route to host
errno 114: Operation already in progress
errno 115: Operation now in progress
errno 116: Stale file handle
errno 117: Structure needs cleaning
errno 118: Not a XENIX named type file
errno 119: No XENIX semaphores available
errno 120: Is a named type file
errno 121: Remote I/O error
errno 122: Disk quota exceeded
errno 123: No medium found
errno 124: Wrong medium type
errno 125: Operation canceled
errno 126: Required key not available
errno 127: Key has expired
errno 128: Key has been revoked
errno 129: Key was rejected by service
errno 130: Owner died
errno 131: State not recoverable
errno 132: Operation not possible due to RF-kill

參考資料

https://blog.csdn.net/scaleqiao/article/details/46056349

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章