Книга: Основы программирования в 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 Работа с файлами
- Шаг вперед, два назад
- Часть I Понятие стимулирования продаж
- Кейсы для третьей части
- Яндекс.Картинки
- * * *
- Заключение
- Шаблон
- Начать рисовать (предлагать решения) до того, как вы полностью разобрались в проблеме
- 11.1.1. Действительные и эффективные ID
- Графические инструменты администратора
- Привлекайте активных сторонников и лидеров в управлении переменами