Коди помилок Linux - це ті коди, які відображаються, якщо в системі сталася помилка під час роботи або використання програми. Помилки можна розпізнати за допомогою кодів помилок. Коди помилок допомагають нам розпізнати джерело помилки.
Якщо ми працюємо в системі Linux, очевидно, що ми можемо зіткнутися з помилками. Деякі помилки можуть бути незначними і не призводити до переривання програми. Але можуть бути деякі помилки, через які система або програма перестають відповідати. Ці помилки можуть призвести до втрати даних або перешкодити завершенню програми. Переважно помилки відображаються у вигляді кодів або повідомлень.
У цьому розділі ми побачимо помилки в програмуванні на C і список можливих помилок у Linux система.
Помилки Linux у програмуванні на C
Досвідчений програміст повинен знати, як боротися з помилками. Мова програмування C не забезпечує прямої підтримки обробки помилок. Ми повинні виявити джерело помилки та усунути її. У мові C повертані значення відображають помилку або успіх. Якщо функція в програмі на C виходить з ладу, ми повинні відповідним чином обробити помилку; інакше він записує останні помилки у файл журналу.
Під час виконання програм на C ми можемо помітити деякі номери помилок, наприклад «Номер помилки: 17». Тут помилка № 17 означає, що файл уже існує. Кожен номер помилки має певне значення.
Мова C підтримує змінну 'помилка .' Використовуючи цю змінну номеру помилки, ми можемо використати деякі функції обробки помилок для належної обробки.
Щоб використовувати номер помилки зовнішньої змінної, ми повинні включити файл заголовка 'errno.h.' Файл заголовка використовується для визначення змінної 'errno'. Змінна errno встановлюється системними викликами та функціями бібліотеки під час виникнення помилки. Є дві важливі функції в Мова програмування C боротися з помилками; помилка і strerror . Функція perror використовується для друку опису помилки, а функція sterror повертає рядок із кодом помилки.
Давайте виведемо список кодів помилок за допомогою errno.
Помилка Linux
Утиліта errno використовується для пошуку кодів errno, назв макросів і відповідних описів. Наприклад, якщо ми надаємо ENOENT у системі Linux, він відображатиме код 2 і опис Немає такого файлу чи каталогу .' Якщо ми надамо код 2, він відобразить ENOENT та його опис .
Якщо утиліта errno не встановлена на нашій машині, вона відобразить помилку таким чином:
Щоб встановити його, виконайте наведену нижче команду:
sudo apt install moreutils
Виконуючи наведену вище команду, на нашій машині встановлюється пакет moreutils, який містить утиліту errno.
Відобразити список кодів помилок
Щоб відобразити список кодів помилок, виконайте наступну команду:
errno -l
Наведена вище команда відобразить список кодів помилок RedHat. Розглянемо наведений нижче результат:
Відображення інформації про номер помилки
Щоб відобразити інформацію про певний номер помилки, виконайте таку команду:
errno 2
Наведена вище команда відобразить опис помилки номер 2. Розгляньте наведений нижче результат:
Відображення інформації про назву помилки
Щоб відобразити інформацію про певну назву помилки, виконайте команду errno, а потім назву помилки. Наприклад, щоб відобразити інформацію про назву помилки 'ESRCH ,' виконайте команду наступним чином:
errno ESRCH
Наведена вище команда відобразить інформацію про вказану назву помилки. Розглянемо наведений нижче результат:
Відображення помилки за допомогою рядків
Щоб відобразити опис помилки за допомогою рядка з опису, виконайте таку команду:
errno -s permission
Наведена вище команда відобразить помилки, опис яких містить дозвіл рядка. Розглянемо наведений нижче результат:
Список системних помилок Linux
Нижче наведено частковий список можливих помилок системи Linux:
Код помилки | помилка № | опис |
---|---|---|
Верхній | 1 | Він відображається, якщо операція не дозволена. |
ENOENT | 2 | Він відображається, якщо такого файлу немає або каталог існує. |
ESRCH | 3 | Він відображається, якщо такого процесу немає. |
EINTR | 4 | Він відображається для перерваного системного виклику |
EIO | 5 | Він відображається для помилки введення/виведення. |
ENXIO | 6 | Воно відображається, якщо такого пристрою немає або адреса існує. |
E2BIG | 7 | Він відображається, якщо список аргументів задовгий. |
ENOEXEC | 8 | Він відображається, якщо є помилка формату exec |
EBADF | 9 | Відображається у разі неправильного дескриптора файлу. |
ЕЧАЙЛД | 10 | Він відображається, якщо дочірній процес не існує. |
ЗНОВУ | одинадцять | Відображається, якщо ресурс тимчасово недоступний. |
ЕНОМЕМ | 12 | Він відображається, якщо система не може виділити пам'ять. |
EACCES | 13 | Він відображається, якщо в дозволі відмовлено. |
ПОМИЛКА | 14 | Він відображається, якщо є неправильна адреса. |
ENOTBLK | п'ятнадцять | Воно відображається, якщо потрібно заблокувати пристрій. |
ЗАЙНЯТЕ | 16 | Відображається, якщо пристрій або ресурс зайняті. |
ІСНУЄ | 17 | Відображається, якщо файл уже існує. |
EXDEV | 18 | Він відображається, якщо є недійсне міжпристройне зв’язування. |
ENODEV | 19 | Відображається, якщо такого пристрою немає. |
ENOTDIR | двадцять | Відображається, якщо каталог відсутній. |
EISDIR | двадцять один | Відображається, якщо є каталог. |
ОДИН ВИБІР | 22 | Він відображається, якщо є недійсний аргумент. |
ОДЯГНУТИ | 23 | Він відображається, якщо в системі забагато відкритих файлів. |
МЕРТВИЙ | 24 | Він відображається, якщо відкрито забагато файлів. |
ENOTTY | 25 | Він відображається, якщо є невідповідний ioctl для пристрою. |
ETXTBSY | 26 | Відображається, якщо текстовий файл зайнятий. |
EFBIG | 27 | Він відображається, якщо файл завеликий. |
ENOSPC | 28 | Він відображається, якщо на пристрої не залишилося місця. |
ESPIPE | 29 | Він відображається у разі незаконного пошуку. |
EROFS | 30 | Він відображається у випадку файлової системи, доступної лише для читання. |
EMLINK | 31 | Він відображається, якщо посилань забагато. |
EPIPE | 32 | Відображається в разі розриву труби. |
EDOM | 33 | Він відображається, якщо числовий аргумент виходить за межі домену. |
ERANGE | 3. 4 | Він відображається, якщо числовий результат виходить за межі діапазону. |
EDEADLK | 35 | Він відображається, якщо вдалося уникнути взаємоблокування ресурсу. |
ENAMETOOLONG | 36 | Він відображається, якщо назва файлу задовга. |
ENOLCK | 37 | Він відображається, якщо немає доступних замків. |
ENOSYS | 38 | Відображається, якщо функція не реалізована. |
ЕНОТЕПТИ | 39 | Відображається, якщо каталог не порожній. |
ELOOP | 40 | Він відображається, якщо рівнів символьних посилань забагато. |
ENOMSG | 42 | Відображається, якщо немає повідомлення потрібного типу. |
EIDRM | 43 | Він відображається, якщо ідентифікатор видалено. |
ECHRNG | 44 | Відображається, якщо номер каналу виходить за межі діапазону. |
EL2NSYNC | Чотири | Він відображається, якщо рівень 2 не синхронізовано. |
EL3HLT | 46 | Він відображається, якщо рівень 3 зупинено. |
EL3RST | 47 | Він відображається, якщо рівень 3 скинуто. |
ELNRNG | 48 | Він відображається, якщо номер посилання виходить за межі діапазону. |
EUNATCH | 49 | Відображається, якщо драйвер протоколу не підключено. |
ENOCSI | п'ятдесят | Він відображається, якщо структура CSI відсутня. |
EL2HLT | 51 | Він відображається, якщо Рівень 2 зупинено. |
ЦЕ БУЛО | 52 | Відображається у разі недійсного обміну. |
EBADR | 53 | Відображається у разі недійсного дескриптора запиту. |
ПОВНИЙ | 54 | Відображається, якщо обмін повний. |
ENOANO | 55 | Відображається, якщо анода немає. |
EBADRQC | 56 | Він відображається для недійсного коду запиту. |
EBADSLT | 57 | Він відображається для недійсного слота. |
EBFONT | 59 | Він відображається, якщо є неправильний формат файлу шрифту. |
ОДНОБОКИЙ | 60 | Він відображається, якщо пристрій не є потоковим. |
ENODATA | 61 | Він відображається, якщо дані відсутні. |
ETIME | 62 | Відображається, якщо таймер закінчився. |
ENOSR | 63 | Відображається у разі відсутності потокових ресурсів. |
ENONET | 64 | Він відображається, якщо апарат не в мережі. |
ЕНОПКГ | 65 | Він відображається, якщо пакет не встановлено. |
EREMOTE | 66 | Відображається, якщо об'єкт віддалений. |
ENOLINK | 67 | Воно відображається, якщо зв’язок було розірвано. |
EADV | 68 | Він відображається для помилки оголошення. |
ESRMNT | 69 | Він відображається для помилки Srmount. |
ECOMM | 70 | Воно відображається, якщо під час надсилання сталася помилка зв’язку. |
EPROTO | 71 | Відображається для помилки протоколу. |
ЕМУЛЬТИХОП | 72 | Він відображається для спроби Multihop. |
EDOTDOT | 73 | Він відображається для конкретної помилки RFS. |
EBADMSG | 74 | Воно відображається для поганого повідомлення. |
ПЕРЕЛИВ | 75 | Він відображається, якщо значення завелике для визначеного типу даних. |
ENOTUNIQ | 76 | Воно відображається, якщо ім’я не є унікальним у мережі. |
EBADFD | 77 | Він відображається, якщо дескриптор файлу знаходиться в поганому стані. |
ЕРЕМЧГ | 78 | Він відображається, якщо віддалена адреса змінена. |
ЕЛІБАКС | 79 | Він відображається, якщо ми не можемо отримати доступ до потрібної спільної бібліотеки. |
ЕЛІББАД | 80 | Він відображається у разі доступу до пошкодженої спільної бібліотеки. |
ELIBSCN | 81 | Він відображається, якщо розділ .lib у файлі a.out пошкоджено. |
ЕЛІБМАКС | 82 | Воно відображається, якщо ми намагаємося зв’язати забагато спільних бібліотек. |
ELIBEXEC | 83 | Він відображається, якщо ми не можемо безпосередньо виконати спільну бібліотеку. |
EILSEQ | 84 | Він відображається для недійсного або неповного багатобайтового або широкого символу |
ERESTART | 85 | Він відображається, щоб повідомити про те, що перерваний системний виклик слід перезапустити. |
ЕСТРУПКА | 86 | Він відображається, якщо є помилка каналу потоків. |
EUUSERS | 87 | Він відображається для занадто великої кількості користувачів. |
ЕНОТОК | 88 | Він відображається для роботи сокета на не-сокеті. |
EDESTADDRREQ | 89 | Він відображається, якщо потрібна адреса призначення. |
EMSGSIZE | 90 | Він відображається, якщо повідомлення занадто довге. |
ЕПРОТОТИП | 91 | Він відображається, якщо тип протоколу для сокета неправильний. |
ЕНОПРОТООПТ | 92 | Він відображається, якщо протокол недоступний. |
ЕПРОТОНОПІДТРИМКА | 93 | Відображається, якщо протокол не підтримується. |
ESOCKTNOSUPPORT | 94 | Він відображається, якщо тип Socket не підтримується. |
ЕОПНОЦУПП | 95 | Він відображається, якщо операція не підтримується. |
EPFNOSUPPORT | 96 | Він відображається, якщо сімейство протоколів не підтримується. |
EAFNOSUPPORT | 97 | Він відображається, якщо сімейство адрес не підтримується протоколом. |
ЕАДДРІНУС | 98 | Він відображається, якщо адреса вже використовується. |
EADDNOTAVAIL | 99 | Він відображається, якщо система не може призначити запитану адресу. |
ENETDOWN | 100 | Він відображається, якщо мережа не працює. |
ENETUNREACH | 101 | Він відображається, якщо мережа недоступна. |
ENETRESET | 102 | Відображається, якщо під час скидання з’єднання з мережею було розірвано. |
ECONNABORTED | 103 | Він відображається, якщо програмне забезпечення спричинило переривання з’єднання. |
ECONNRESET | 104 | Він відображається, якщо з’єднання скинуто одноранговим вузлом. |
ЕНОБУФС | 105 | Він відображається, якщо немає вільного місця в буфері. |
ЕСКОН | 106 | Він відображається, якщо транспортна кінцева точка вже підключена. |
ENOTCONN | 107 | Він відображається, якщо транспортна кінцева точка не підключена. |
ВИКЛЮЧЕННЯ | 108 | Воно відображається, якщо система не може надіслати після завершення роботи транспортної кінцевої точки. |
ETOOMANYREFS | 109 | Він відображається, якщо посилань забагато: неможливо з’єднати. |
ETIMEDOUT | 110 | Він відображається, якщо час очікування з’єднання минув. |
ECONNREFUSED | 111 | Він відображається, якщо підключення відмовлено. |
EHOSTDOWN | 112 | Він відображається, якщо хост не працює. |
EHOSTUNREACH | 113 | Він відображається, якщо немає маршруту до хосту. |
ВЖЕ | 114 | Відображається, якщо операція вже виконується. |
КОЖЕН ПРОГРЕС | 115 | Відображається, якщо операція зараз виконується. |
НАТИСНІТЬ | 116 | Він відображається для дескриптора застарілого файлу. |
EUCLEAN | 117 | Відображається, якщо конструкція потребує очищення. |
УНІФОРМА | 118 | Він відображається для файлу типу, що не є іменованим XENIX. |
ENAVAIL | 119 | Він відображається, якщо немає доступних семафорів XENIX. |
EISNAM | 120 | Він відображається, якщо є файл іменованого типу. |
EREMOTIO | 121 | Відображається для помилки віддаленого введення/виведення. |
EDQUOT | 122 | Він відображається, якщо дискова квота перевищена. |
ЕНОМЕДІЙ | 123 | Він відображається, якщо носій не знайдено. |
EMEDIUMTYPE | 124 | Він відображається, якщо тип носія неправильний. |
СКАСУВАНО | 125 | Він відображається, якщо операцію скасовано. |
ENOKEY | 126 | Він відображається, якщо необхідний ключ недоступний. |
EKEY МІНЧИВ | 127 | Він відображається, якщо термін дії ключа закінчився. |
EKEY REVOKED | 128 | Він відображається, якщо ключ було анульовано. |
EKEY REJECTED | 129 | Відображається, якщо ключ відхилено службою. |
EOWNERDEAD | 130 | Відображається, якщо Власник помер. |
ЕНОВІДНОВЛЕНИЙ | 131 | Він відображається для стану, що не підлягає відновленню. |
ERFKILL | 132 | Він відображається, якщо операція неможлива через RF-kill. |
EHWISON | 133 | Він відображається, якщо на сторінці пам’яті є апаратна помилка. |