errno.h also defines a large number of symbolic constants
that specify what the various error numbers mean. Here is a sampling:
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
#define EIO 5 /* I/O error */
#define EBADF 9 /* Bad file descriptor */
#define ENOMEM 12 /* Not enough space */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
#define EEXIST 17 /* File exists */
#define EISDIR 21 /* Is a directory */
#define ENFILE 23 /* Too many open files in system */
#define EMFILE 24 /* Too many open files */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ENOTREADY 46 /* Device not ready */
#define EWRPROTECT 47 /* Write-protected media */
#define EFORMAT 48 /* Unformatted media */
#define EDQUOT 88 /* Disc quota exceeded */