קודי שגיאה של לינוקס הם אותם קודים המוצגים אם מתרחשת שגיאה במערכת בזמן עבודה או שימוש בתוכנית. ניתן לזהות את השגיאות בעזרת קודי שגיאה. קודי השגיאה מסייעים לנו לזהות את מקור השגיאה.
אם אנו עובדים על מערכת לינוקס, ברור שאנו עלולים להיתקל בשגיאות. שגיאות מסוימות יכולות להיות קלות וייתכן שלא יובילו להפסקה של התוכנית. אבל יכולות להיות כמה שגיאות שיכולות לגרום למערכת או לתוכנית להפסיק להגיב. שגיאות אלו עלולות להוביל לאובדן נתונים או למנוע את השלמת התוכנית. לרוב שגיאות מוצגות בצורה של קודים או הודעות.
בסעיף זה, נראה שגיאות בתכנות C ורשימת שגיאות אפשריות ב- לינוקס מערכת.
שגיאות לינוקס בתכנות C
מתכנת מיומן צריך לדעת איך להתמודד עם השגיאות. שפת התכנות C אינה מספקת תמיכה ישירה לטיפול בשגיאות. עלינו לזהות את מקור השגיאה ולטפל בה. בשפת C, ערכי ההחזרה מציגים את הכישלון או ההצלחה. אם פונקציה בתוכנית C נכשלת, עלינו לטפל בשגיאה בהתאם; אחרת הוא מתעד את השגיאות האחרונות בקובץ יומן.
בזמן הפעלת תוכניות C, אנו עשויים להבחין במספרי שגיאה כגון 'שגיאה מס' היא: 17'. כאן, שגיאה מס' 17 פירושה שהקובץ כבר קיים. לכל מספר שגיאה יש משמעות כלשהי.
שפת C תומכת במשתנה 'שגיאה .' על ידי שימוש במשתנה מספר שגיאה זה, נוכל להשתמש בכמה פונקציות לטיפול בשגיאות כדי לטפל בו כראוי.
כדי להשתמש במספר השגיאה של המשתנה החיצוני, עלינו לכלול קובץ כותרת 'errno.h' קובץ הכותרת משמש להגדרת המשתנה 'errno'. משתנה errno נקבע על ידי קריאות המערכת ופונקציות הספרייה בהתרחשות השגיאה. ישנן שתי פונקציות חשובות ב- שפת תכנות C להתמודד עם טעויות; טעות ו strerror . הפונקציה perror משמשת להדפסת תיאור השגיאה והפונקציה sterror מחזירה מחרוזת בעלת קוד שגיאה.
בואו נציג את רשימת קודי השגיאה באמצעות errno.
שגיאה של לינוקס
כלי השירות errno משמש לחיפוש קודי שגיאה, שמות מאקרו והתיאורים המתאימים. לדוגמה, אם נספק את ENOENT במערכת לינוקס, היא תציג את הקוד 2 ואת התיאור ' אין כזה קובץ או תקייה .' אם נספק את הקוד 2, הוא יציג את ENOENT והתיאור שלו .
אם כלי השירות errno אינו מותקן במחשב שלנו, הוא יציג את השגיאה באופן הבא:
כדי להתקין אותו, בצע את הפקודה הבאה:
sudo apt install moreutils
על ידי ביצוע הפקודה לעיל, חבילת moreutils מותקנת במחשב שלנו המכילה את כלי השירות errno.
הצג את רשימת קודי השגיאה
כדי להציג את רשימת קודי השגיאה, בצע את הפקודה באופן הבא:
errno -l
הפקודה לעיל תציג את רשימת קודי השגיאה של RedHat. שקול את הפלט שלהלן:
הצג את המידע של מספר שגיאה
כדי להציג את המידע של מספר שגיאה מסוים, בצע את הפקודה באופן הבא:
errno 2
הפקודה לעיל תציג את התיאור של שגיאה מספר 2. שקול את הפלט שלהלן:
הצג את המידע של שם שגיאה
כדי להציג את המידע של שם שגיאה מסוים, בצע את הפקודה errno, ואחריה את שם השגיאה. לדוגמה, כדי להציג את המידע של שם שגיאה 'ESCH ,' בצע את הפקודה באופן הבא:
errno ESRCH
הפקודה לעיל תציג את המידע על שם השגיאה שצוין. שקול את הפלט שלהלן:
הצג את השגיאה באמצעות מחרוזות
כדי להציג תיאור שגיאה באמצעות מחרוזת מהתיאור, בצע את הפקודה באופן הבא:
errno -s permission
הפקודה לעיל תציג את השגיאות שהתיאור שלהן מכיל הרשאת מחרוזת. שקול את הפלט שלהלן:
רשימה של שגיאות מערכת לינוקס
להלן רשימה חלקית של שגיאות אפשריות של מערכת לינוקס:
קוד שגיאה | שגיאה מס' | תיאור |
---|---|---|
עֶלִיוֹן | 1 | הוא מוצג אם הפעולה אינה מותרת. |
ENOENT | 2 | הוא מוצג אם אין קובץ או ספרייה כאלה. |
ESRCH | 3 | הוא מוצג אם לא קיים תהליך כזה. |
EINTR | 4 | הוא מוצג עבור שיחת מערכת מופרעת |
EIO | 5 | הוא מוצג עבור שגיאת קלט/פלט. |
ENXIO | 6 | הוא מוצג אם אין התקן או כתובת כזו. |
E2BIG | 7 | הוא מוצג אם רשימת הארגומנטים ארוכה מדי. |
ENOEXEC | 8 | היא מוצגת אם יש שגיאת פורמט exec |
EBADF | 9 | הוא מוצג במקרה של מתאר קובץ גרוע. |
ECHILD | 10 | הוא מוצג אם לא קיים תהליך צאצא. |
שוב | אחד עשר | הוא מוצג אם המשאב אינו זמין באופן זמני. |
ENOMEM | 12 | הוא מוצג אם המערכת אינה יכולה להקצות זיכרון. |
EACCES | 13 | הוא מוצג אם ההרשאה נדחתה. |
EFAULT | 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 | זה מוצג במקרה של צינור שבור. |
אֱדוֹם | 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 | הוא מוצג במקרה של מתאר בקשה לא חוקי. |
EXFULL | 54 | זה מוצג אם ההחלפה מלאה. |
ENOANO | 55 | הוא מוצג במקרה של אין אנודה. |
EBADRQC | 56 | הוא מוצג עבור קוד בקשה לא חוקי. |
EBADSLT | 57 | הוא מוצג עבור משבצת לא חוקית. |
EBFONT | 59 | הוא מוצג אם יש פורמט קובץ גופן גרוע. |
חד צדדי | 60 | הוא מוצג אם המכשיר אינו זרם. |
ENODATA | 61 | הוא מוצג אם אין נתונים זמינים. |
ETIME | 62 | הוא מוצג במקרה של פג תוקף הטיימר. |
ENOSR | 63 | זה מוצג במקרה של משאבים מחוץ לזרמים. |
ENONET | 64 | הוא מוצג אם המכשיר אינו ברשת. |
ENOPKG | 65 | הוא מוצג אם החבילה אינה מותקנת. |
ERMOTE | 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 | הוא מוצג אם מתאר הקובץ במצב רע. |
EREMCHG | 78 | הוא מוצג אם הכתובת המרוחקת משתנה. |
ELIBACC | 79 | הוא מוצג אם אין לנו גישה לספרייה משותפת הדרושה. |
אליבאד | 80 | הוא מוצג במקרה של גישה לספרייה משותפת פגומה. |
ELIBSCN | 81 | הוא מוצג אם יש קטע lib ב-a.out פגום. |
ELIBMAX | 82 | הוא מוצג אם אנו מנסים לקשר במספריות משותפות רבות מדי. |
ELIBEXEC | 83 | הוא מוצג אם איננו יכולים לנהל ספרייה משותפת ישירות. |
EILSEQ | 84 | הוא מוצג עבור תו רב-בתים לא חוקי או לא שלם |
ERESTART | 85 | הוא מוצג כדי ליידע שיש להפעיל מחדש שיחת מערכת שהופרעה. |
ESTRAPIPE | 86 | זה מוצג אם יש שגיאת צינור זרמים. |
EUSERS | 87 | הוא מוצג עבור משתמשים רבים מדי. |
ENOTSOCK | 88 | הוא מוצג עבור פעולת שקע על שקע שאינו. |
EDESTADDRREQ | 89 | הוא מוצג אם כתובת היעד נדרשת. |
EMSGSIZE | 90 | הוא מוצג אם ההודעה ארוכה מדי. |
אפרוטוטייפ | 91 | הוא מוצג אם הפרוטוקול הוא סוג שגוי עבור שקע. |
ENOPROTOOPT | 92 | הוא מוצג אם הפרוטוקול אינו זמין. |
EPROTONOSUPPORT | 93 | הוא מוצג אם הפרוטוקול אינו נתמך. |
ESOCKTNOSUPPORT | 94 | הוא מוצג אם סוג Socket אינו נתמך. |
EOPNOTSUPP | 95 | הוא מוצג אם הפעולה אינה נתמכת. |
EPFNOSUPPORT | 96 | הוא מוצג אם משפחת הפרוטוקולים אינה נתמכת. |
EAFNOSUPPORT | 97 | הוא מוצג אם משפחת הכתובות אינה נתמכת על ידי פרוטוקול. |
EADDRINUS | 98 | הוא מוצג אם הכתובת כבר בשימוש. |
EADDRNOTAVAIL | 99 | הוא מוצג אם המערכת לא יכולה להקצות כתובת מבוקשת. |
ENETDOWN | 100 | זה מוצג אם הרשת מושבתת. |
ENETUNREACH | 101 | היא מוצגת אם לא ניתן להגיע לרשת. |
ENETRESET | 102 | זה מוצג אם הרשת ניתקה את החיבור בעת האיפוס. |
סומך | 103 | הוא מוצג אם תוכנה גרמה לביטול החיבור. |
ECONNRESET | 104 | זה מוצג אם החיבור מאופס על ידי עמית. |
ENOBUFS | 105 | הוא מוצג אם אין שטח חיץ פנוי. |
ESKON | 106 | הוא מוצג אם נקודת הקצה של התחבורה כבר מחוברת. |
ENOTCONN | 107 | הוא מוצג אם נקודת הקצה של התחבורה אינה מחוברת. |
ESHUTDOWN | 108 | הוא מוצג אם המערכת לא יכולה לשלוח לאחר כיבוי נקודת קצה התחבורה. |
ETOOMANYREFS | 109 | הוא מוצג אם יש יותר מדי הפניות: לא ניתן לחבר. |
ETIMEDOUT | 110 | הוא מוצג אם תם הזמן הקצוב לחיבור. |
מסורב | 111 | הוא מוצג אם החיבור נדחה. |
EHOSTDOWN | 112 | הוא מוצג אם המארח מושבת. |
EHOSTUNREACH | 113 | הוא מוצג אם אין מסלול לארח. |
כבר מוכנה | 114 | הוא מוצג אם הפעולה כבר מתבצעת. |
כל התקדמות | 115 | זה מוצג אם הפעולה מתבצעת כעת. |
נְקִישָׁה | 116 | הוא מוצג עבור ידית הקובץ המעוותת. |
EUCLEAN | 117 | הוא מוצג אם המבנה זקוק לניקוי. |
מדים | 118 | הוא מוצג עבור לא קובץ מסוג XENIX בשם. |
ENVAIL | 119 | הוא מוצג אם אין סמפורים זמינים של XENIX. |
EISNAM | 120 | הוא מוצג אם יש קובץ סוג בשם. |
EREMOTIO | 121 | הוא מוצג עבור שגיאת קלט/פלט מרחוק. |
EDQUOT | 122 | הוא מוצג אם חריגה ממכסת הדיסקים. |
ENOMEDIUM | 123 | הוא מוצג אם לא נמצא מדיום. |
EMEDIUMTYPE | 124 | הוא מוצג אם יש סוג בינוני שגוי. |
בוטל | 125 | הוא מוצג אם הפעולה מבוטלת. |
ENOKEY | 126 | הוא מוצג אם המפתח הנדרש אינו זמין. |
EKEYEXPIRED | 127 | הוא מוצג אם פג תוקף המפתח. |
EKEYVOKED | 128 | הוא מוצג אם המפתח נשלל. |
EKEY נדחה | 129 | הוא מוצג אם המפתח נדחה על ידי השירות. |
EOWNERDEAD | 130 | זה מוצג אם הבעלים מת. |
ניתן לשחזר | 131 | הוא מוצג ללא מצב שניתן לשחזר. |
ERFKILL | 132 | היא מוצגת אם הפעולה אינה אפשרית עקב הרג RF. |
EHWPOISON | 133 | הוא מוצג אם בדף הזיכרון יש שגיאת חומרה. |