`
cloudmail
  • 浏览: 271401 次
  • 来自: 广州
社区版块
存档分类
最新评论

Linux errno.h

阅读更多

 

22:参数错误,比如ip地址不合法,没有目标端口等

101:网络不可达,比如不能ping通

111:链接被拒绝,比如目标关闭链接等

115:当链接设置为非阻塞时,目标没有及时应答,返回此错误,socket可以继续使用

 

 

Linux通过errno这个变量来记录最近一次出错的内容,类似Windows下的GetLastError()函数的返回值。

 

 

/* errno is not a global variable, because that would make using it
   non-reentrant.  Instead, its address is returned by the function
   __errno.  */

#ifndef _SYS_ERRNO_H_
#ifdef __cplusplus
extern "C" {
#endif
#define _SYS_ERRNO_H_

#include <sys/reent.h>

#ifndef _REENT_ONLY
#define errno (*__errno())
extern int *__errno _PARAMS ((void));
#endif

/* Please don't use these variables directly.
   Use strerror instead. */
extern __IMPORT _CONST char * _CONST _sys_errlist[];
extern __IMPORT int _sys_nerr;
#ifdef __CYGWIN__
extern __IMPORT const char * const sys_errlist[];
extern __IMPORT int sys_nerr;
#endif

#define __errno_r(ptr) ((ptr)->_errno)

#define	EPERM 1	/* Not super-user */
#define	ENOENT 2	/* No such file or directory */
#define	ESRCH 3	/* No such process */
#define	EINTR 4	/* Interrupted system call */
#define	EIO 5	/* I/O error */
#define	ENXIO 6	/* No such device or address */
#define	E2BIG 7	/* Arg list too long */
#define	ENOEXEC 8	/* Exec format error */
#define	EBADF 9	/* Bad file number */
#define	ECHILD 10	/* No children */
#define	EAGAIN 11	/* No more processes */
#define	ENOMEM 12	/* Not enough core */
#define	EACCES 13	/* Permission denied */
#define	EFAULT 14	/* Bad address */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define	ENOTBLK 15	/* Block device required */
#endif
#define	EBUSY 16	/* Mount device busy */
#define	EEXIST 17	/* File exists */
#define	EXDEV 18	/* Cross-device link */
#define	ENODEV 19	/* No such device */
#define	ENOTDIR 20	/* Not a directory */
#define	EISDIR 21	/* Is a directory */
#define	EINVAL 22	/* Invalid argument */
#define	ENFILE 23	/* Too many open files in system */
#define	EMFILE 24	/* Too many open files */
#define	ENOTTY 25	/* Not a typewriter */
#define	ETXTBSY 26	/* Text file busy */
#define	EFBIG 27	/* File too large */
#define	ENOSPC 28	/* No space left on device */
#define	ESPIPE 29	/* Illegal seek */
#define	EROFS 30	/* Read only file system */
#define	EMLINK 31	/* Too many links */
#define	EPIPE 32	/* Broken pipe */
#define	EDOM 33	/* Math arg out of domain of func */
#define	ERANGE 34	/* Math result not representable */
#define	ENOMSG 35	/* No message of desired type */
#define	EIDRM 36	/* Identifier removed */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define	ECHRNG 37	/* Channel number out of range */
#define	EL2NSYNC 38	/* Level 2 not synchronized */
#define	EL3HLT 39	/* Level 3 halted */
#define	EL3RST 40	/* Level 3 reset */
#define	ELNRNG 41	/* Link number out of range */
#define	EUNATCH 42	/* Protocol driver not attached */
#define	ENOCSI 43	/* No CSI structure available */
#define	EL2HLT 44	/* Level 2 halted */
#endif
#define	EDEADLK 45	/* Deadlock condition */
#define	ENOLCK 46	/* No record locks available */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define EBADE 50	/* Invalid exchange */
#define EBADR 51	/* Invalid request descriptor */
#define EXFULL 52	/* Exchange full */
#define ENOANO 53	/* No anode */
#define EBADRQC 54	/* Invalid request code */
#define EBADSLT 55	/* Invalid slot */
#define EDEADLOCK 56	/* File locking deadlock error */
#define EBFONT 57	/* Bad font file fmt */
#endif
#define ENOSTR 60	/* Device not a stream */
#define ENODATA 61	/* No data (for no delay io) */
#define ETIME 62	/* Timer expired */
#define ENOSR 63	/* Out of streams resources */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define ENONET 64	/* Machine is not on the network */
#define ENOPKG 65	/* Package not installed */
#define EREMOTE 66	/* The object is remote */
#endif
#define ENOLINK 67	/* The link has been severed */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define EADV 68	/* Advertise error */
#define ESRMNT 69	/* Srmount error */
#define	ECOMM 70	/* Communication error on send */
#endif
#define EPROTO 71	/* Protocol error */
#define	EMULTIHOP 74	/* Multihop attempted */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define	ELBIN 75	/* Inode is remote (not really error) */
#define	EDOTDOT 76	/* Cross mount point (not really error) */
#endif
#define EBADMSG 77	/* Trying to read unreadable message */
#define EFTYPE 79	/* Inappropriate file type or format */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define ENOTUNIQ 80	/* Given log. name not unique */
#define EBADFD 81	/* f.d. invalid for this operation */
#define EREMCHG 82	/* Remote address changed */
#define ELIBACC 83	/* Can't access a needed shared lib */
#define ELIBBAD 84	/* Accessing a corrupted shared lib */
#define ELIBSCN 85	/* .lib section in a.out corrupted */
#define ELIBMAX 86	/* Attempting to link in too many libs */
#define ELIBEXEC 87	/* Attempting to exec a shared library */
#endif
#define ENOSYS 88	/* Function not implemented */
#ifdef __CYGWIN__
#define ENMFILE 89      /* No more files */
#endif
#define ENOTEMPTY 90	/* Directory not empty */
#define ENAMETOOLONG 91	/* File or path name too long */
#define ELOOP 92	/* Too many symbolic links */
#define EOPNOTSUPP 95	/* Operation not supported on transport endpoint */
#define EPFNOSUPPORT 96 /* Protocol family not supported */
#define ECONNRESET 104  /* Connection reset by peer */
#define ENOBUFS 105	/* No buffer space available */
#define EAFNOSUPPORT 106 /* Address family not supported by protocol family */
#define EPROTOTYPE 107	/* Protocol wrong type for socket */
#define ENOTSOCK 108	/* Socket operation on non-socket */
#define ENOPROTOOPT 109	/* Protocol not available */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define ESHUTDOWN 110	/* Can't send after socket shutdown */
#endif
#define ECONNREFUSED 111	/* Connection refused */
#define EADDRINUSE 112	/* Address already in use */
#define ECONNABORTED 113	/* Connection aborted */
#define ENETUNREACH 114	/* Network is unreachable */
#define ENETDOWN 115	/* Network interface is not configured */
#define ETIMEDOUT 116	/* Connection timed out */
#define EHOSTDOWN 117	/* Host is down */
#define EHOSTUNREACH 118	/* Host is unreachable */
#define EINPROGRESS 119	/* Connection already in progress */
#define EALREADY 120	/* Socket already connected */
#define EDESTADDRREQ 121	/* Destination address required */
#define EMSGSIZE 122	/* Message too long */
#define EPROTONOSUPPORT 123	/* Unknown protocol */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define ESOCKTNOSUPPORT 124	/* Socket type not supported */
#endif
#define EADDRNOTAVAIL 125	/* Address not available */
#define ENETRESET 126
#define EISCONN 127	/* Socket is already connected */
#define ENOTCONN 128	/* Socket is not connected */
#define ETOOMANYREFS 129
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define EPROCLIM 130
#define EUSERS 131
#endif
#define EDQUOT 132
#define ESTALE 133
#define ENOTSUP 134	/* Not supported */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define ENOMEDIUM 135   /* No medium (in tape drive) */
#endif
#ifdef __CYGWIN__
#define ENOSHARE 136    /* No such host or network path */
#define ECASECLASH 137  /* Filename exists with different case */
#endif
#define EILSEQ 138
#define EOVERFLOW 139	/* Value too large for defined data type */
#define ECANCELED 140	/* Operation canceled */
#define ENOTRECOVERABLE 141	/* State not recoverable */
#define EOWNERDEAD 142	/* Previous owner died */
#ifdef __LINUX_ERRNO_EXTENSIONS__
#define ESTRPIPE 143	/* Streams pipe error */
#endif
#define EWOULDBLOCK EAGAIN	/* Operation would block */

#define __ELASTERROR 2000	/* Users can add values starting here */

#ifdef __cplusplus
}
#endif
#endif /* _SYS_ERRNO_H */
 

 

分享到:
评论

相关推荐

    Linux下errno.h文件错误号说明.docx

    Linux errno.h 文件错误号说明 errno.h 文件是 Linux 系统中一个非常重要的头文件,它定义了一系列的错误号,每个错误号对应着一个特定的错误信息。了解这些错误号对于 Linux 系统的开发和调试至关重要。 在 Linux...

    Linux中搭建apue.h头文件环境

    在Linux系统中,为了进行《UNIX环境高级编程》的学习与实践,我们经常需要使用到apue.h这个头文件。这个头文件包含了多个用于系统编程的辅助函数和宏定义,是根据《UNIX环境高级编程》一书中的接口进行封装的。在...

    linux双网卡驱动源码(enc28j60).zip

    #include &lt;linux/errno.h&gt; #include &lt;linux/init.h&gt; #include &lt;linux/netdevice.h&gt; #include &lt;linux/etherdevice.h&gt; #include &lt;linux/ethtool.h&gt; #include &lt;linux/tcp.h&gt; #include &lt;linux/skbuff.h&gt; #include &lt;linux...

    wince5.rar_Fcntl.h wince_direct.h in ce_wince direct.h_wince err

    `fcntl.h`是Unix和类Unix系统(如Linux)中用于处理文件控制操作的头文件,它包含了对文件描述符的管理和文件状态标志设置等功能。在Windows CE中,由于系统内核与标准Unix系统不同,`fcntl.h`的功能并不完全相同,...

    Linux中errno使用.docx

    Linux 中 errno 使用 Linux 操作系统中的 errno 变量是一个非常重要的概念,它用于记录函数调用时出现的错误信息。errno 变量是通过 include errno.h 头文件来定义的,errno 的值是一个整数,它的值可以通过查看 ...

    GPIO模拟I2C程序实现

    #include &lt;linux/errno.h&gt; #include &lt;linux/miscdevice.h&gt; #include &lt;linux/fcntl.h&gt; #include &lt;linux/init.h&gt; #include &lt;linux/delay.h&gt; #include &lt;linux/proc_fs.h&gt; #include &lt;linux/workqueue.h&gt; #include ...

    Linux头文件.doc

    * `errno.h`:定义了错误号,包含系统中各种出错号。 * `fcntl.h`:定义了文件控制头文件,用于文件及其描述符的操作控制常数符号的定义。 * `signal.h`:定义了信号符号常量,信号结构以及信号操作函数原型。 * `...

    errno(3) - Linux manual page.pdf

    当linux系统函数出错时,通常会返回一个负值,而且整型变量errno通常被设置为具有特定信息的值。例如,open 函数如果成功执行 则返回一个非负文件描述符,如出错则返回−1。在 open出错时,有大约15种不同的errno值(文件...

    linux 下grep命令C代码实现

    #include &lt;errno.h&gt; #include &lt;getopt.h&gt; #include &lt;limits.h&gt; #include &lt;libgen.h&gt; #include &lt;locale.h&gt; #include &lt;stdbool.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;unistd.h&gt; ...

    linux头文件介绍

    &lt;errno.h &gt; 出错码 &lt;fcntl.h &gt; 文件控制 &lt;float.h &gt; 浮点常数 &lt;signal.h &gt; 信号 &lt;stdarg.h &gt; 可变参数表 &lt;stddef.h &gt; 标准定义 &lt;stdio.h &gt; 标准I/O库 &lt;stdlib.h &gt; 公用函数 &lt;string.h &gt; 字符串操作 ......

    linux内核指导相关源代码

    #include &lt;linux/errno.h&gt; #include &lt;linux/types.h&gt; #include &lt;linux/fcntl.h&gt; #include &lt;linux/init.h&gt; #include &lt;linux/poll.h&gt; #include &lt;asm/uaccess.h&gt; #include &lt;asm/system.h&gt; #ifndef VFIFO_MAJOR #define ...

    socket_linux_client.c

    #include &lt;errno.h&gt; //定义错误码 #include &lt;string.h&gt;//字符串处理 #include &lt;netdb.h&gt; #include &lt;sys/types.h&gt;//send();recv(); #include &lt;netinet/in.h&gt;//htons(); #include &lt;sys/socket.h&gt;//send();recv(); #...

    Linux驱动头文件

    3. `&lt;linux/errno.h&gt;`:提供了系统错误号的宏定义,使开发者可以通过`perror`函数输出错误信息。 4. `&lt;linux/types.h&gt;`:定义了一些特定的类型,如`dev_t`, `off_t`, `pid_t`等,方便代码的可读性和一致性。 5. `...

    带中文注释的 linux 0.11 源代码

    .....\.......\errno.h .....\.......\fcntl.h .....\.......\linux .....\.......\.....\config.h .....\.......\.....\fs.h .....\.......\.....\hdreg.h .....\.......\.....\head.h .....\.......\........

    linux_c_func(linux).rar_linux

    1. **头文件与预处理**:在Linux C编程中,常用头文件如`&lt;stdio.h&gt;`,`&lt;stdlib.h&gt;`,`&lt;string.h&gt;`等,预处理器指令如`#include`,`#define`,`#ifdef`等用于引入库函数和定义常量。 2. **标准输入/输出**:C语言中...

    Linux头文件作用.pdf

    5. `&lt;errno.h&gt;`:提供了错误码定义,当Linux C API函数出错时,会设置全局变量`errno`来指示错误原因。通过查询`errno`的值,开发者可以了解程序运行中的错误。 6. `&lt;getopt.h&gt;`:处理命令行参数解析,`getopt()`...

    Linux C .rar

    3. **标准库函数**:描述中的“库函数”指的是标准C库中的函数,如&lt;stdio.h&gt;中的输入输出函数,&lt;string.h&gt;中的字符串操作函数,&lt;stdlib.h&gt;中的内存管理和转换函数等。手册可能详细列出了每个函数的用途、参数和...

    linuxC.rar

    9. **错误处理**:在Linux C编程中,需要学会使用`errno`和`perror`处理运行时错误,以及使用`assert`进行断言检查,以确保程序的健壮性。 10. **多线程编程**:Linux支持POSIX线程(pthread),通过`pthread_...

    关于linux驱动(应用)程序头文件使用

    - **`linux/errno.h`**:提供了错误号的宏定义,允许用户程序通过`perror`函数输出错误信息,增强了调试便利性。 - **`linux/types.h`**:定义了一些特殊类型,如`dev_t`、`off_t`和`pid_t`等,这些类型大多是基于...

    linux c头文件大全

    `&lt;errno.h&gt;` - **用途**: 定义了`errno`全局变量及其对应的错误码。 - **功能**: 用于获取和解析系统调用失败的原因。 - **示例**: `if (open(fd, O_RDONLY) == -1) { perror("Open error"); }` #### 5. `&lt;getopt....

Global site tag (gtag.js) - Google Analytics