====== Tratamento de Erros ====== A maioria das funções devolve somente uma indicação de que houve erro em sua execução, seja através de um valor negativo, seja através de um ponteiro nulo. O erro ocorrido na função é armazenado na variável **errno**, definida internamente no sistema e disponibilizada no programa através da colocação do arquivo errno.h na compilação do programa. Dentro deste arquivo //header// também são definidas as constantes mnemônicas dos possíveis erros que podem acontecer nas funções. Em caso de se necessitar testar um erro específico, sugere-se sempre usar este mnemônico em lugar do número, pois assim o sistema ficará mais portável e imune às mudanças futuras de versões de Sistema Operacional. Um fator importante de ser citado é que as funções não zeram o valor da variável **errno** caso não ocorra erro nas funções. Isto obriga ao programador usar a variável **errno** somente depois de ter verificado se a função realmente retornou erro. #include #include #include int main (void) { int iFileDescriptor; fprintf(stderr, "\nAbrindo um arquivo que nao existe\n"); iFileDescriptor = open("arquivo_nao_existe",O_RDONLY); if (iFileDescriptor < 0) { fprintf(stderr, "Codigo de Erro: %d\n", errno); /* utilizando a variável errno para mostrar o código do erro. */ } fprintf(stderr, "\nAbrindo um arquivo que existe\n"); iFileDescriptor = open("arquivo_existe",O_RDONLY); fprintf(stderr, "Codigo de Erro: %d\n", errno); /* Para utilizar a variável errno é necessário que tenha acontecido algum erro, pois a variável continua com o valor do último erro ocorrido. */ return 0; } ===== Outras Funções ===== * [[strerror]] * [[perror]]