Errno are values returned by the kernel to detail the nature of an error in depth. When a syscall does not error out, it returns the value 0 on the errno field. Here is a table of all the possible errno and its values and meaning:
ERANGE (3)
The passed value was not big enough.
EACCES (1002)
The passed access for a variable points to bad memory.
EAGAIN (1006)
The requested resource is not available at the moment.
EBUSY (1010)
The requested resource is busy and cannot handle the request.
ECHILD (1012)
The passed value is not a child process.
EFAULT (1020)
The passed value would make the program fault.
EFBIG (1021)
File too large, or an attempt to surpass the limit on file size was issued.
EIDRM (1023)
Invalid identifier.
EINVAL (1026)
The passed value is not valid for the called syscall.
EIO (1027)
The requested operation failed at a device level.
ELOOP (1030)
Too many symlinks were encountered when resolving a requested path.
EMFILE (1031)
Too many files were opened by the process.
ENAMETOOLONG (1036)
The passed value is too big for the syscall.
ENOENT (1043)
No such file or directory.
ENOSYS (1051)
The requested syscall or flag is not implemented.
ENOTTY (1058)
The passed argument is not a TTY.
ENOTSUPP (1060)
The passed argument is valid, but does not implement the operation. Mostly used for sockets and other networking elements when dealing with protocols.
EPERM (1063)
Bad permissions.
ESPIPE (1069)
A seek was issued to an invalid device.
ESRCH (1070)
The passed item could not be found after a search.
EBADFD (1081)
The passed FD is in a bad state or invalid.