El archivo de cabecera de la biblioteca estándar de C
errno.h, el cual mediante macros presenta un informe de errores mediante la
definición de códigos de error.
|  | 
| Foto tomada de freedigitalphotos.net | 
Los códigos de error vienen definidos como constantes y son dependientes del compilador que se use. Según wikipedia en MinGW son los
siguientes:
#define EPERM                    1          /* Operation not permitted */
#define           ENOFILE                  2          /* No such file or directory */
#define           ENOENT                   2
#define           ESRCH                      3          /* No such proces*s */
#define EINTR*                    4          /* Interrupted function call* */
#define           EIO                 5          /* Input/output 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 descriptor */
#define           ECHILD                    10        /* No child processes */
#define           EAGAIN                   11        /* Resource temporarily unavailable */
#define           ENOMEM                 12        /* Not enough space */
#define           EACCES                    13        /* Permission denied */
#define           EFAULT                    14        /* Bad address */
/*  15 - Unknown Error
*/
#define           EBUSY                      16        /* strerror reports "Resource device" */
#define           EEXIST                     17        /* File exists */
#define           EXDEV                     18        /* Improper link (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        /* Inappropriate I/O control operation */
/* 26 - Unknown Error */
#define           EFBIG                       27        /* File too large */
#define           ENOSPC                    28        /* No space left on device */
#define           ESPIPE                      29        /* Invalid seek (seek on a pipe?) */
#define           EROFS                       30        /* Read-only file system */
#define           EMLINK                   31        /* Too many links */
#define           EPIPE             32        /*
Broken pipe */
#define           EDOM                       33        /* Domain error (math functions) */
#define           ERANGE                   34        /* Result too large (possibly too small) */
/* 35 - Unknown Error */
#define           EDEADLOCK          36        /*
Resource deadlock avoided (non-Cyg) */
#define           EDEADLK                36
/* 37 - Unknown Error */
#define           ENAMETOOLONG 38        /*
Filename too long (91 in Cyg?) */
#define           ENOLCK                   39        /* No locks available (46 in Cyg?) */
#define           ENOSYS                   40        /* Function not implemented (88 in Cyg?) */
#define           ENOTEMPTY           41        /*
Directory not empty (90 in Cyg?) */
#define           EILSEQ                     42        /* Illegal byte sequence */
En Borland C++ las constantes serían los siguientes:
#define EZERO   
0      /* Error 0                  */
#define EINVFNC 
1      /* Invalid function
number  */
#define ENOFILE 
2      /* File not found           */
#define ENOPATH 
3      /* Path not found           */
#define ECONTR  
7      /* Memory blocks
destroyed  */
#define EINVMEM 
9      /* Invalid memory block
address */
#define EINVENV 10     
/* Invalid environment      */
#define EINVFMT 11     
/* Invalid format           */
#define EINVACC 12     
/* Invalid access code      */
#define EINVDAT 13     
/* Invalid data             */
#define EINVDRV 15     
/* Invalid drive specified  */
#define ECURDIR 16    
 /* Attempt to remove CurDir */
#define ENOTSAM 17     
/* Not same device          */
#define ENMFILE 18     
/* No more files            */
#define ENOENT  
2      /* No such file or
directory*/
#define EMFILE  
4      /* Too many open files      */
#define EACCES  
5      /* Permission denied        */
#define EBADF   
6      /* Bad file number          */
#define ENOMEM  
8      /* Not enough core          */
#define EFAULT 
14      /* Unknown error            */
#define ENODEV 
15      /* No such device           */
#define EINVAL 
19      /* Invalid argument         */
#define E2BIG  
20      /* Arg list too long        */
#define ENOEXEC 21     
/* Exec format error        */
#define EXDEV  
22      /* Cross-device link        */
#define ENFILE  23      /* Too many open files      */
#define ECHILD 
24      /* No child process         */
#define ENOTTY 
25      /* UNIX - not MSDOS         */
#define ETXTBSY 26     
/* UNIX - not MSDOS         */
#define EFBIG  
27      /* UNIX - not MSDOS         */
#define ENOSPC 
28      /* No space left on
device  */
#define ESPIPE 
29      /* Illegal seek             */
#define EROFS  
30      /* Read-only file
system    */
#define EMLINK 
31      /* UNIX - not MSDOS         */
#define EPIPE  
32      /* Broken pipe              */
#define EDOM   
33      /* Math argument            */
#define ERANGE 
34      /* Result too large         */
#define EEXIST 
35      /* File already
exists      */
#define EDEADLOCK 36   
/* Locking violation        */
#define EPERM   37      /* Operation not permitted  */
#define ESRCH  
38      /* UNIX - not MSDOS         */
#define EINTR  
39      /* Interrupted function
call */
#define EIO    
40      /* Input/output error       */
#define ENXIO  
41      /* No such device or
address */
#define EAGAIN 
42      /* Resource temporarily
unavailable */
#define ENOTBLK 43     
/* UNIX - not MSDOS         */
#define EBUSY  
44      /* Resource busy            */
#define ENOTDIR 45     
/* UNIX - not MSDOS         */
#define EISDIR 
46      /* UNIX - not MSDOS         */
#define EUCLEAN 47     
/* UNIX - not MSDOS         */
En Microsoft Windows los errores y su clasificación pueden
encontrarse en su página de documentación para desarrolladores.
En la web de The Single UNIX® Specification podemos ver la
última actualización en la página de The Open Group.
En la web barricane se hace una recopilación de los errores
códigos de error en Linux/C desde los archivos contenidos en
/usr/include/asm-generic/errno-base.h y /usr/include/asm-generic/errno.h.
¿Qué utilidades ves al uso de errno.h?