在哪里可以找到所有类型的bsd样式套接字错误的列表?
答案 0 :(得分:6)
在文档中?例如,对于connect(),请参阅:
% man connect
...
ECONNREFUSED
No-one listening on the remote address.
EISCONN
The socket is already connected.
ENETUNREACH
Network is unreachable.
答案 1 :(得分:2)
您还可以在Open Group的页面上找到每个函数的错误代码列表(及其含义的一般描述)(例如connect)。
答案 2 :(得分:1)
你想知道所有可能的错误或对它们的一些评论,你可以看看头文件,在Linux系统上有
#ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1 /* Operation not permitted */ #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 /* Argument list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child processes */ #define EAGAIN 11 /* Try again */ ...
#ifndef _ASM_GENERIC_ERRNO_H #define _ASM_GENERIC_ERRNO_H #include #define EDEADLK 35 /* Resource deadlock would occur */ #define ENAMETOOLONG 36 /* File name too long */ #define ENOLCK 37 /* No record locks available */ #define ENOSYS 38 /* Function not implemented */ #define ENOTEMPTY 39 /* Directory not empty */ #define ELOOP 40 /* Too many symbolic links encountered */ #define EWOULDBLOCK EAGAIN /* Operation would block */ ...
如果你想知道什么是错误的电话,例如socket()或connect()可以返回,当安装开发手册并尝试man socket或man connect
时答案 3 :(得分:1)
许多功能会在errno
失败时设置errno.h
,而不是自己通过perror
并将错误编号转换为字符串,您最好不要致电perror
。
errno
会将当前stderr
的相应邮件打印到if (connect())
{
perror("connect() failed in function foo");
...
}
并带有可选前缀。
使用示例:
perror
strerror
有一个名为strerror_r
和stderr
的朋友,如果你想捕获字符串以便在{{1}}以外的地方使用,那么他们可能会很有用。