




Вы также можете найти список кодов ошибок (и общее описание их значения) на страницах Open Group для каждой функции (например, соединять).
В документации? Например, для connect () см .:
% man connect
...
ECONNREFUSED
No-one listening on the remote address.
EISCONN
The socket is already connected.
ENETUNREACH
Network is unreachable.
Если вы хотите знать все возможные ошибки или некоторые комментарии к ним, вы можете взглянуть на файлы заголовков, в системе 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
Многие функции устанавливают errno в случае сбоя, и вместо того, чтобы самостоятельно просматривать errno.h и преобразовывать номер ошибки в строки, гораздо лучше вызвать perror.
perror напечатает соответствующее сообщение текущего errno на stderr с необязательным префиксом.
Пример использования:
if (connect())
{
perror("connect() failed in function foo");
...
}
У perror есть друзья по имени strerror и strerror_r, которые могут оказаться полезными, если вы хотите захватить строку для использования в других местах, кроме stderr.