Книга: Основы программирования в Linux
Ошибки
Как вы видели, многие системные вызовы и функции, описанные в этой главе, могут завершиться аварийно по ряду причин. Когда это происходит, они указывают причину сбоя, задавая значение внешней переменной errno
. Многие стандартные библиотеки используют эту переменную как стандартный способ оповещения о возникших проблемах. Стоит повторить, что программа должна проверять переменную errno сразу же после возникновения проблемы в функции, поскольку errno может быть изменена следующей вызванной функцией, даже если она завершилась нормально.
Имена констант и варианты ошибок перечислены в заголовочном файле errno.h. К ним относятся следующие:
? EPERM
— Operation not permitted (операция не разрешена);
? ENOENT
— No such file or directory (нет такого файла или каталога);
? EINTR
— Interrupted system call (прерванный системный вызов);
? EIO
— I/O Error (ошибка ввода/вывода);
? EBUSY
— Device or resource busy (устройство или ресурс заняты);
? EEXIST
— File exists (файл существует);
? EINVAL
— Invalid argument (неверный аргумент);
? EMFILE
— Too many open files (слишком много открытых файлов);
? ENODEV
— No such device (нет такого устройства);
? EISDIR
— Is a directory (это каталог);
? ENOTDIR
— Isn't a directory (это не каталог).
Есть пара полезных функций, сообщающих об ошибках при их возникновении: strerror
и perror
.
- Глава 3 Работа с файлами
- Шаг вперед, два назад
- 6.3.2. Процедура сбора качественных данных
- Глава 2 Табличный редактор Microsoft Excel
- «Плиточные» структуры и квазикристаллы
- 16.13 Формат сообщений MIME
- Как уразуметь свою техническую роль и придерживаться ее
- Отправка запроса
- Build a Run-Time Image for an OS Design
- Как отвечать на письма, полученные вашей организацией
- 5.1.1. Создание трехмерной модели радиатора
- Привязка к процессорам