logo

Linux кодове за грешки

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 не е инсталирана на нашата машина, тя ще покаже грешката, както следва:

Linux кодове за грешки

За да го инсталирате, изпълнете командата по-долу:

 sudo apt install moreutils 

Чрез изпълнение на горната команда на нашата машина се инсталира пакетът moreutils, който съдържа помощната програма errno.

Linux кодове за грешки

Покажете списъка с кодове за грешки

За да покажете списъка с кодовете за грешки, изпълнете командата, както следва:

 errno -l 

Горната команда ще покаже списъка с кодове за грешки от RedHat. Помислете за резултата по-долу:

Linux кодове за грешки

Показване на информация за номер на грешка

За да покажете информацията за определен номер на грешка, изпълнете командата, както следва:

 errno 2 

Горната команда ще покаже описанието на грешка номер 2. Разгледайте изхода по-долу:

Linux кодове за грешки

Показване на информация за име на грешка

За да покажете информацията за конкретно име на грешка, изпълнете командата errno, последвана от името на грешката. Например, за да се покаже информацията за име на грешка „ESRCH ,' изпълнете командата, както следва:

 errno ESRCH 

Горната команда ще покаже информацията за указаното име на грешка. Помислете за резултата по-долу:

Linux кодове за грешки

Покажете грешката с помощта на низове

За да покажете описание на грешка с помощта на низ от описанието, изпълнете командата, както следва:

 errno -s permission 

Горната команда ще покаже грешките, чието описание съдържа разрешение за низ. Помислете за резултата по-долу:

Linux кодове за грешки

Списък на системните грешки на 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 Показва се, ако страницата с памет има хардуерна грешка.