2008-10-05 3 views

ответ

6

В документации? Например, для подключения(), см:

% man connect 
... 
    ECONNREFUSED 
      No-one listening on the remote address. 
    EISCONN 
      The socket is already connected. 

    ENETUNREACH 
      Network is unreachable. 
2

Вы также можете найти список кодов ошибок (и общее описание их значения) на страницах Open Group для каждой функции (например, connect).

1

из вас хотят знать все возможные ERRNO или каким-либо комментарии на них вы могли бы взглянуть на файлы заголовков, в системе Linux там находятся в

  • /usr/include/asm-generic/errno-base.h
 
#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 */ 
... 
  • /usr/include/asm-generic/errno.h
 
#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 */ 
... 

Если вы хотите знать, что Errno вызов, например, socket() или connect() может вернуться при установке файлов разработки и попробуйте подключиться к man-разъему или человеку.

1

Многие функции будут устанавливать errno на отказ и вместо того, чтобы проходить через errno.h самостоятельно и преобразовать номер ошибки в строки, вы намного лучше звонить perror.

perror будет печатать текущее errno соответствующее сообщение stderr с дополнительным префиксом.

Пример использования:

if (connect()) 
{ 
    perror("connect() failed in function foo"); 
    ... 
} 

perror есть друзья называют strerror и strerror_r, которые могут оказаться полезными, если вы хотите, чтобы захватить строку для использования в других местах, чем stderr.

Смежные вопросы