заголовочник, предоставляющий механизм сигнализации и диагностики ошибок через глобальную переменную и набор макросов-кодов ошибок. Используется совместно с системными и библиотечными вызовами для понимания причин неуспешных операций.
определения:
#include <errno.h> extern int errno; /* глобальная переменная с кодом последней ошибки */ #define EDOM /* аргумент вне области определения (матем. функции) */ #define ERANGE /* результат вне диапазона представимых значений */ #define EILSEQ /* некорректная последовательность байтов (напр., при преобразовании кодировок) */ #define EACCES /* отказ в доступе (файлы/ресурсы) */ #define ENOENT /* файл или каталог не найден */ #define EEXIST /* файл уже существует */ #define ENOMEM /* недостаточно памяти */ #define EBADF /* неверный файловый дескриптор */ #define EAGAIN /* ресурс временно недоступен (повторите позже) */ #define EINTR /* операция прервана сигналом */ #define EINVAL /* невалидный аргумент */ #define EIO /* ошибка ввода-вывода */ #define ENOSPC /* недостаточно места на устройстве */ #define EPIPE /* запись в pipe без читателя */ char *strerror(int errnum); /* получить строковое описание кода ошибки */ int strerror_r(int errnum, char *buf, size_t buflen); /* потокобезопасная версия (две реализации: POSIX/GNU) */ void perror(const char *s); /* вывести сообщение об ошибке на stderr (s: префикс) */
понятия:
особенности:
пример использования:
#include <stdio.h> #include <stdlib.h> #include <errno.h> int main(int argc, const char * argv[]) { // Generate unique filename. char *file_name = tmpnam((char[L_tmpnam]){0}); errno = 0; FILE *file = fopen(file_name, "rb"); if (file) { // Do something useful. fclose(file); } else { perror("fopen() "); } return EXIT_SUCCESS; }