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.