Existem dois aspectos: o modo como o sistema chama o sinal de que ocorreu um erro e a forma como o erro ocorreu é relatado.
A maioria das chamadas do sistema indica que ocorreu um erro ao retornar -1, mas isso não é totalmente universal (por exemplo, algumas chamadas do sistema são sempre bem-sucedidas, por exemplo, getpid ).
Se você souber que ocorreu um erro, o código de erro estará sempre em errno ¹. Existem valores padrão definidos em errno.h , e todas as variantes unix adicionam algumas próprio. Códigos de erro são conhecidos por constantes cujo nome começa com E ; os valores numéricos variam de sistema operacional para sistema operacional. Esses códigos de erro são padrão (por exemplo, EACCESS sempre significa “permissão negada”, EIO sempre significa “erro de entrada / saída”,…), mas o que cada mensagem de erro significa depende da chamada do sistema.
As funções padrão strerror e perror fornece mensagens de erro que você pode exibir para um usuário.
Observe que, se nenhum erro ocorreu durante a última chamada de sistema ou chamada de função da biblioteca C, errno pode conter lixo.