אות - לינוקס / פיקוד יוניקס

לינוקס תומך בשני אותות POSIX אמין (להלן "אותות סטנדרטיים") ו POSIX אותות בזמן אמת.

אותות סטנדרטיים

לינוקס תומכת באותות סטנדרטיים המפורטים להלן. מספר מספרי אותות תלוי בארכיטקטורה, כפי שמצוין בעמודה "Value". (כאשר שלושה ערכים ניתנים, הראשון הוא בדרך כלל תקף עבור אלפא ו sparc, באמצע אחד עבור i386, ppc ו sh, ואת האחרון עבור mips.

A - מציין כי האות נעדר על הארכיטקטורה המתאימה.)

הערכים בעמודה "פעולה" בטבלה מציינים את פעולת ברירת המחדל עבור האות, באופן הבא:

טווח

פעולת ברירת המחדל היא לסיים את התהליך.

Ign

פעולת ברירת המחדל היא להתעלם מהאות.

הליבה

פעולת ברירת המחדל היא לסיים את התהליך ואת הליבה dump.

תפסיק

פעולת ברירת המחדל היא לעצור את התהליך.

ראשית האותות המתוארים בתקן המקורי POSIX.1.

אוֹת ערך פעולה תגובה
או מוות של תהליך השליטה
סיגינט 2 טווח פסיקה מהמקלדת
SIGQUIT 3 הליבה צא מהמקלדת
סיגיל 4 הליבה הוראה בלתי חוקית
SIGABRT 6 הליבה ביטול אות מהפסקה (3)
SIGFPE 8 הליבה נקודה חריגה נקודה
סיגקיל 9 טווח להרוג את האות
SIGSEGV 11 הליבה אזכור זיכרון לא חוקי
SIGPIPE 13 טווח צינור שבור: לכתוב לצינור ללא קוראים
סיגלרם 14 טווח טיימרים אזעקה (2)
סיגטרם 15 טווח אות סיום
SIGUSR1 30,10,16 טווח אות מוגדר על ידי המשתמש 1
SIGUSR2 31,12,17 טווח אות מוגדר על ידי המשתמש 2
SIGCHLD 20,17,18 Ign הילד נעצר או הסתיים
SIGCONT 19,18,25 המשך אם נפסק
סיגסטופ 17,19,23 תפסיק עצור תהליך
SIGTSTP 18,20,24 תפסיק הפסק להקליד ב- tty
סיגטין 21,21,26 תפסיק tty קלט עבור תהליך הרקע
SIGTTOU 22,22,27 תפסיק tty פלט עבור תהליך הרקע

האותות SIGKILL ו- SIGSTOP לא יכולים להיתפס, לחסום או להתעלם מהם.

הבא את האותות לא POSIX.1 תקן אבל מתואר SUSv2 ו SUSv3 / POSIX 1003.1-2001.

אוֹת ערך פעולה תגובה
SIGPOLL טווח אירוע בר-אירוע (Sys V). שם נרדף של SIGIO
SIGPROF 27,27,29 טווח פג תוקף הזמן של הפרופיל
SIGSYS 12, -, 12 הליבה ארגומנט שגוי לשגרה (SVID)
SIGTRAP 5 הליבה Trace / נקודת עצירה מלכודת
סיגורג 16,23,21 Ign מצב דחוף בשקע (4.2 BSD)
SIGVTALRM 26,26,28 טווח שעון מעורר וירטואלי (4.2 BSD)
SIGXCPU 24,24,30 הליבה חרגת מגבלת זמן המעבד (4.2 BSD)
SIGXFSZ 25,25,31 הליבה מגבלת גודל הקובץ חרגה (4.2 BSD)

עד וכולל Linux 2.2, התנהגות ברירת המחדל עבור SIGSYS , SIGXCPU , SIGXFSZ ו- (על ארכיטקטורות שאינן SPARC ו- MIPS) SIGBUS הייתה לסיים את התהליך (ללא מזבלה בסיסית). (בחלק מהיחידות האחרות פעולת ברירת המחדל עבור SIGXCPU ו- SIGXFSZ היא לסיים את התהליך ללא מזבלה בסיסית). Linux 2.4 תואמת לדרישות POSIX 1003.1-2001 עבור אותות אלה, ובכך מסיימת את התהליך עם פריקת ליבה.

הבא אותות שונים.

אוֹת ערך פעולה תגובה
SIGEMT 7, -, 7 טווח
SIGSTKFLT -, 16, - טווח מחסנית תקלה במעבד (לא בשימוש)
SIGIO 23,29,22 טווח I / O כעת אפשרי (4.2 BSD)
SIGCLD -, -, 18 Ign שם נרדף ל- SIGCHLD
SIGPWR 29,30,19 טווח תקלה בחשמל (מערכת V)
SIGINFO 29, -, - שם נרדף ל SIGPWR
SIGLOST -, -, - טווח נעילת הקובץ אבודה
סיגווינץ ' 28,28,20 Ign שינוי גודל החלון (4.3 BSD, Sun)
SIGUNUSED -, 31, - טווח אות לא בשימוש (יהיה SIGSYS)

(אות 29 הוא SIGINFO / SIGPWR על אלפא אבל SIGLOST על sparc .)

SIGEMT לא צוין ב POSIX 1003.1-2001, אך ללא יוצא מן הכלל מופיע על רוב יחידות אחרות, שם ברירת מחדל הפעולה שלה היא בדרך כלל לסיים את התהליך עם dump הליבה.

SIGPWR (אשר לא צוין ב POSIX 1003.1-2001) הוא בדרך כלל התעלמו כברירת מחדל באותן יחידות אחרות שבו הוא מופיע.

SIGIO (שאינו מצוין ב- POSIX 1003.1-2001) מתעלמת כברירת מחדל במספר יחידות אחרות.

איתותים בזמן אמת

לינוקס תומכת אותות בזמן אמת כפי שהוגדרו במקור הרחבות בזמן אמת POSIX.4 (ועכשיו כלולים POSIX 1003.1-2001). לינוקס תומכת 32 אותות בזמן אמת, ממוספרים מ 32 ( SIGRTMIN ) ל 63 ( SIGRTMAX ). (תוכניות צריכות תמיד להתייחס לאותות בזמן אמת תוך שימוש בסימון SIGRTMIN + n, מכיוון שמגוון אותות בזמן אמת משתנה על פני Unices).

בניגוד אותות סטנדרטיים, אותות בזמן אמת אין משמעויות מוגדרות מראש: את כל סט של אותות בזמן אמת ניתן להשתמש למטרות מוגדרות יישום. (שים לב, עם זאת, כי יישום LinuxThreads משתמש הראשון שלוש אותות בזמן אמת.)

פעולת ברירת המחדל עבור אות בזמן אמת לא מטופלת היא לסיים את תהליך הקבלה.

אותות בזמן אמת נבדלים באופן הבא:

  1. מספר מופעים של אותות בזמן אמת יכול להיות בתור. לעומת זאת, אם מופעים מרובים של אות סטנדרטי מועברים בזמן שהאות הזה נחסם כעת, אזי רק מופע אחד עומד בתור.
  2. אם האות נשלח באמצעות sigqueue (2), ערך נלווה (או מספר שלם או מצביע) ניתן לשלוח עם האות. אם התהליך המקבל יוצר מטפל עבור אות זה באמצעות הדגל SA_SIGACTION כדי sigaction (2) אז זה יכול לקבל את הנתונים האלה באמצעות שדה si_value של המבנה siginfo_t עבר כמו הארגומנט השני למפעיל. יתר על כן, שדות si_pid ו si_uid של מבנה זה ניתן להשתמש כדי להשיג את PID ואת מזהה המשתמש האמיתי של תהליך שליחת האות.
  3. אותות בזמן אמת מועברים בסדר מובטח. מספר אותות בזמן אמת מאותו סוג מועברים לפי הסדר שנשלח. אם אותות שונים בזמן אמת נשלחים לתהליך, הם מועברים עם האות הנמוך ביותר. (כלומר, אותות בעלי מספר נמוך הם בעלי עדיפות עליונה).

אם שני האותות הסטנדרטיים והזמן אמת ממתינים לתהליך, POSIX משאיר אותו ללא פירוט אשר מועבר תחילה. לינוקס, כמו יישומים רבים אחרים, נותן עדיפות אותות סטנדרטיים במקרה זה.

על פי POSIX, יישום צריך לאפשר לפחות _POSIX_SIGQUEUE_MAX (32) אותות בזמן אמת להיות בתור לתהליך. עם זאת, במקום להציב מגבלה לכל תהליך, לינוקס מטילה מגבלה על המערכת במספר האותות הממתינים בזמן אמת לכל התהליכים.

מגבלה זו ניתן לראות (עם זכות) השתנה באמצעות / proc / sys / kernel / rtsig-max הקובץ. קובץ קשור, / proc / sys / kernel / rtsig-max , ניתן להשתמש כדי לגלות כמה אותות בזמן אמת כרגע בתור.

התאמה ל

POSIX.1

חשוב: השתמש בפקודת הגבר ( % man ) כדי לראות כיצד נעשה שימוש בפקודה במחשב הספציפי שלך.