본문 바로가기

Development/C/C++

Linux C/C++ Error Code 확인방법



 Linux C/C++에서 Error Code를 확인하는 방법은 다음과 같다. 




#include "error.h"


printf("%d", errno);



 Linux C/C++에서는 기본적으로 발생되는 에러 코드 값이 'errno' 변수에 저장이 된다. 

(별도의 선언 불필요. 'error.h' 파일만 포함해주면 사용 가능)


 위 소스와 같이 'errno' 값을 현재 발생된 에러 코드값이다. 

단순히 에러가 발생된 지점에서 해당 변수의 값만 확인하면 된다는 간편한점도 있지만, 해당 변수의 값은 프로세스 동작에 따라 수시로 변화한다. 오류가 발생된 시점에 바로 확인하지 못한다면, 타 오류 또는 동작으로 인해 잘못된 에러 코드 값이 변경되어 있으니 주의해야한다. 


Eorr Code는 다음과 같이 정의되어있다. 


#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 */

#define ENOMEM            12  /* Out of memory */

#define EACCES            13  /* Permission denied */

#define EFAULT            14  /* Bad address */

#define ENOTBLK           15  /* Block device required */

#define EBUSY             16  /* Device or resource 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  /* File table overflow */

#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 argument out of domain of func */

#define ERANGE            34  /* Math result not representable */

#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 */

#define ENOMSG            42  /* No message of desired type */

#define EIDRM             43  /* Identifier removed */

#define ECHRNG            44  /* Channel number out of range */

#define EL2NSYNC          45  /* Level 2 not synchronized */

#define EL3HLT            46  /* Level 3 halted */

#define EL3RST            47  /* Level 3 reset */

#define ELNRNG            48  /* Link number out of range */

#define EUNATCH           49  /* Protocol driver not attached */

#define ENOCSI            50  /* No CSI structure available */

#define EL2HLT            51  /* Level 2 halted */

#define EBADE             52  /* Invalid exchange */

#define EBADR             53  /* Invalid request descriptor */

#define EXFULL            54  /* Exchange full */

#define ENOANO            55  /* No anode */

#define EBADRQC           56  /* Invalid request code */

#define EBADSLT           57  /* Invalid slot */

#define EDEADLOCK         EDEADLK

#define EBFONT            59  /* Bad font file format */

#define ENOSTR            60  /* Device not a stream */

#define ENODATA           61  /* No data available */

#define ETIME             62  /* Timer expired */

#define ENOSR             63  /* Out of streams resources */

#define ENONET            64  /* Machine is not on the network */

#define ENOPKG            65  /* Package not installed */

#define EREMOTE           66  /* Object is remote */

#define ENOLINK           67  /* Link has been severed */

#define EADV              68  /* Advertise error */

#define ESRMNT            69  /* Srmount error */

#define ECOMM             70  /* Communication error on send */

#define EPROTO            71  /* Protocol error */

#define EMULTIHOP         72  /* Multihop attempted */

#define EDOTDOT           73  /* RFS specific error */

#define EBADMSG           74  /* Not a data message */

#define EOVERFLOW         75  /* Value too large for defined data type */

#define ENOTUNIQ          76  /* Name not unique on network */

#define EBADFD            77  /* File descriptor in bad state */

#define EREMCHG           78  /* Remote address changed */

#define ELIBACC           79  /* Can not access a needed shared library */

#define ELIBBAD           80  /* Accessing a corrupted shared library */

#define ELIBSCN           81  /* .lib section in a.out corrupted */

#define ELIBMAX           82  /* Attempting to link in too many shared libraries */

#define ELIBEXEC          83  /* Cannot exec a shared library directly */

#define EILSEQ            84  /* Illegal byte sequence */

#define ERESTART          85  /* Interrupted system call should be restarted */

#define ESTRPIPE          86  /* Streams pipe error */

#define EUSERS            87  /* Too many users */

#define ENOTSOCK          88  /* Socket operation on non-socket */

#define EDESTADDRREQ      89  /* Destination address required */

#define EMSGSIZE          90  /* Message too long */

#define EPROTOTYPE        91  /* Protocol wrong type for socket */

#define ENOPROTOOPT       92  /* Protocol not available */

#define EPROTONOSUPPORT   93  /* Protocol not supported */

#define ESOCKTNOSUPPORT   94  /* Socket type not supported */

#define EOPNOTSUPP        95  /* Operation not supported on transport endpoint */

#define EPFNOSUPPORT      96  /* Protocol family not supported */

#define EAFNOSUPPORT      97  /* Address family not supported by protocol */

#define EADDRINUSE        98  /* Address already in use */

#define EADDRNOTAVAIL     99  /* Cannot assign requested address */

#define ENETDOWN          100 /* Network is down */

#define ENETUNREACH       101 /* Network is unreachable */

#define ENETRESET         102 /* Network dropped connection because of reset */

#define ECONNABORTED      103 /* Software caused connection abort */

#define ECONNRESET        104 /* Connection reset by peer */

#define ENOBUFS           105 /* No buffer space available */

#define EISCONN           106 /* Transport endpoint is already connected */

#define ENOTCONN          107 /* Transport endpoint is not connected */

#define ESHUTDOWN         108 /* Cannot send after transport endpoint shutdown */

#define ETOOMANYREFS      109 /* Too many references: cannot splice */

#define ETIMEDOUT         110 /* Connection timed out */

#define ECONNREFUSED      111 /* Connection refused */

#define EHOSTDOWN         112 /* Host is down */

#define EHOSTUNREACH      113 /* No route to host */

#define EALREADY          114 /* Operation already in progress */

#define EINPROGRESS       115 /* Operation now in progress */

#define ESTALE            116 /* Stale NFS file handle */

#define EUCLEAN           117 /* Structure needs cleaning */

#define ENOTNAM           118 /* Not a XENIX named type file */

#define ENAVAIL           119 /* No XENIX semaphores available */

#define EISNAM            120 /* Is a named type file */

#define EREMOTEIO         121 /* Remote I/O error */

#define EDQUOT            122 /* Quota exceeded */

#define ENOMEDIUM         123 /* No medium found */

#define EMEDIUMTYPE       124 /* Wrong medium type */

#define ECANCELED         125 /* Operation Canceled */

#define ENOKEY            126 /* Required key not available */

#define EKEYEXPIRED       127 /* Key has expired */

#define EKEYREVOKED       128 /* Key has been revoked */

#define EKEYREJECTED      129 /* Key was rejected by service */

#define EOWNERDEAD        130 /* Owner died */

#define ENOTRECOVERABLE   131 /* State not recoverable */ 


'Development > C/C++' 카테고리의 다른 글

popen()  (0) 2015.11.02
Network - Socket - Get Local IP Address  (0) 2015.10.27