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 | Показва се за прекъснато системно повикване |
ЕЗР | 5 | Показва се за входно/изходна грешка. |
ENXIO | 6 | Показва се, ако няма такова устройство или съществува адрес. |
E2BIG | 7 | Показва се, ако списъкът с аргументи е твърде дълъг. |
ENOEXEC | 8 | Показва се, ако има грешка във формат exec |
EBADF | 9 | Показва се в случай на лош файлов дескриптор. |
ЕЧАЙЛД | 10 | Показва се, ако не съществува дъщерен процес. |
ПАК | единадесет | Показва се, ако ресурсът е временно недостъпен. |
ЕНОМЕМ | 12 | Показва се, ако системата не може да разпредели памет. |
EACCES | 13 | Показва се, ако разрешението е отказано. |
ГРЕШКА | 14 | Показва се, ако има грешен адрес. |
ENOTBLK | петнадесет | Показва се, ако е необходимо Блокиране на устройство. |
ЗАЕТ | 16 | Показва се, ако устройството или ресурсът са заети. |
СЪЩЕСТВУВА | 17 | Показва се, ако файлът вече съществува. |
EXDEV | 18 | Показва се, ако има невалидна връзка между устройства. |
ЕНОДЕВ | 19 | Показва се, ако няма такова устройство. |
ENOTDIR | двадесет | Показва се, ако няма директория. |
EISDIR | двадесет и едно | Показва се, ако има директория. |
ЕДИН ИЗБОР | 22 | Показва се, ако има невалиден аргумент. |
СЛОЖЕТЕ | 23 | Показва се, ако има твърде много отворени файлове в системата. |
МЪРТВ | 24 | Показва се, ако има твърде много отворени файлове. |
ENOTTY | 25 | Показва се, ако има неподходящ ioctl за устройство. |
ETXTBSY | 26 | Показва се, ако текстовият файл е зает. |
ЕФБИГ | 27 | Показва се, ако файлът е твърде голям. |
ENOSPC | 28 | Показва се, ако на устройството няма останало място. |
ESPIPE | 29 | Показва се в случай на незаконно търсене. |
EROFS | 30 | Показва се в случай на файлова система само за четене. |
EMLINK | 31 | Показва се, ако има твърде много връзки. |
EPIPE | 32 | Показва се в случай на спукана тръба. |
ЕДОМ | 33 | Показва се, ако числовият аргумент е извън домейна. |
ERANGE | 3. 4 | Показва се, ако числовият резултат е извън диапазона. |
EDEADLK | 35 | Показва се, ако блокирането на ресурса е избегнато. |
ENAMETOOLONG | 36 | Показва се, ако името на файла е твърде дълго. |
ENOLCK | 37 | Показва се, ако няма налични ключалки. |
ENOSYS | 38 | Показва се, ако функцията не е реализирана. |
ENOTEMPTY | 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 | Показва се, ако обменът е пълен. |
ЕНОАНО | 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 | Показва се за лошо съобщение. |
EOVERFLOW | 75 | Показва се, ако стойността е твърде голяма за определен тип данни. |
ENOTUNIQ | 76 | Показва се, ако името не е уникално в мрежата. |
EBADFD | 77 | Показва се, ако файловият дескриптор е в лошо състояние. |
ЕРЕМЧГ | 78 | Показва се при промяна на отдалечения адрес. |
ELIBACC | 79 | Показва се, ако нямаме достъп до необходимата споделена библиотека. |
ЕЛИБАД | 80 | Показва се в случай на достъп до повредена споделена библиотека. |
ELIBSCN | 81 | Показва се, ако има .lib раздел в a.out е повреден. |
ЕЛИБМАКС | 82 | Показва се, ако се опитваме да се свържем в твърде много споделени библиотеки. |
ELIBEXEC | 83 | Показва се, ако не можем да изпълним директно споделена библиотека. |
EILSEQ | 84 | Показва се за невалиден или непълен многобайтов или широк знак |
ERESTART | 85 | Показва се, за да информира, че прекъснатото системно повикване трябва да се рестартира. |
ESTRPPIPE | 86 | Показва се, ако има грешка в канала на потоците. |
EUUSERS | 87 | Показва се за твърде много потребители. |
ЕНОЦОК | 88 | Показва се за работа на гнездо на не-гнездо. |
EDESTADDRREQ | 89 | Показва се, ако се изисква адрес на дестинация. |
EMSGSIZE | 90 | Показва се, ако съобщението е твърде дълго. |
ЕПРОТОТИП | 91 | Показва се, ако протоколът е грешен тип за сокет. |
ЕНОПРОТООПТ | 92 | Показва се, ако протоколът не е наличен. |
EPROTONOSUPPORT | 93 | Показва се, ако протоколът не се поддържа. |
ESOCKTNOSUPPORT | 94 | Показва се, ако типът Socket не се поддържа. |
EOPNOTSUPP | 95 | Показва се, ако операцията не се поддържа. |
EPFNOSUPPORT | 96 | Показва се, ако фамилията протоколи не се поддържа. |
EAFNOSUPPORT | 97 | Показва се, ако фамилията адреси не се поддържа от протокол. |
ЕАДДРИНУС | 98 | Показва се, ако адресът вече се използва. |
EADDRNOTAVAIL | 99 | Показва се, ако системата не може да зададе искания адрес. |
ENETDOWN | 100 | Показва се, ако мрежата не работи. |
ENETUNREACH | 101 | Показва се, ако мрежата е недостъпна. |
ENETRESET | 102 | Показва се, ако мрежата е прекъснала връзката при нулиране. |
ECONNABORTED | 103 | Показва се, ако софтуерът е причинил прекъсване на връзката. |
ECONNRESET | 104 | Показва се, ако връзката е нулирана от партньор. |
ENOBUFS | 105 | Показва се, ако няма налично буферно пространство. |
ЕСКОН | 106 | Показва се, ако транспортната крайна точка вече е свързана. |
ENOTCONN | 107 | Показва се, ако транспортната крайна точка не е свързана. |
ИЗКЛЮЧВАНЕ | 108 | Показва се, ако системата не може да изпрати след изключване на транспортната крайна точка. |
ETOOMANYREFS | 109 | Показва се, ако има твърде много препратки: не може да се снажда. |
ETIMEDOUT | 110 | Показва се, ако връзката изтече. |
ECONNRUSED | 111 | Показва се, ако връзката е отказана. |
EHOSTDOWN | 112 | Показва се, ако хостът не работи. |
EHOSTUNREACH | 113 | Показва се, ако няма маршрут за хостване. |
ВЕЧЕ | 114 | Показва се, ако операцията вече е в ход. |
ВСЕКИ НАПРЕДЪК | 115 | Показва се, ако операцията е в ход. |
ЩРАКНЕТЕ | 116 | Показва се за манипулатор на остарял файл. |
EUCLEAN | 117 | Показва се, ако структурата се нуждае от почистване. |
УНИФОРМА | 118 | Показва се за файл, който не е с име XENIX. |
ENAVAIL | 119 | Показва се, ако няма налични XENIX семафори. |
EISNAM | 120 | Показва се, ако има файл с именуван тип. |
ЕРЕМОЦИЯ | 121 | Показва се за Remote I/O error. |
EDQUOT | 122 | Показва се, ако дисковата квота е надвишена. |
ЕНОМЕДИУМ | 123 | Показва се, ако няма намерен носител. |
EMEDIUMTYPE | 124 | Показва се, ако има грешен тип носител. |
ОТМЕНЕН | 125 | Показва се, ако операцията е отменена. |
ENOKEY | 126 | Показва се, ако необходимият ключ не е наличен. |
EKEY ИЗТЕКЪЛ | 127 | Показва се, ако ключът е изтекъл. |
EKEY REVOKED | 128 | Показва се, ако ключът е отменен. |
EKEY ОТХВЪРЛЕНО | 129 | Показва се, ако ключът е бил отхвърлен от услугата. |
EOWNERDEAD | 130 | Показва се, ако собственикът е починал. |
ЕНОВЪЗСТАНОВИМИ | 131 | Показва се за невъзстановимо състояние. |
ERFKILL | 132 | Показва се, ако операцията не е възможна поради RF-kill. |
EHWOISON | 133 | Показва се, ако страницата с памет има хардуерна грешка. |