Signal - Linux / Unix Buyruq

Linux POSIX ishonchli signallarini (bundan keyin "standart signallar") va POSIX real vaqtda signallarni qo'llab-quvvatlaydi.

Standart signallar

Linux quyidagi standart signallarni qo'llab-quvvatlaydi. Bir necha signal raqamlari "qiymat" ustunida ko'rsatilganidek, me'morchilikka bog'liq. (Bu erda uchta qiymat berilgan bo'lsa, ikkinchisi odatda alfa va sparc uchun, ikkinchisi esa i386, ppc va sh uchun, va mits uchun oxirgi.

A - mos keladigan arxitekturada signal yo'qligini bildiradi.)

Jadvalning "Amaliy" ustunidagi yozuvlar signal uchun ko'rsatuv amalni quyidagicha belgilaydi:

Davr

Odatiy amal - jarayonni tugatish.

Ign

Standart amal signalni e'tiborsiz qoldirishdir.

Core

Odatiy amal - jarayonni tugatish va yadro yadrosi.

To'xta

Odatiy harakatlar jarayonni to'xtatishdir.

Avval original POSIX.1 standartida tasvirlangan signallar.

Signal Qiymat Harakat Fikr
yoki nazorat qilish jarayonining o'limiga olib kelishi mumkin
SIGINT 2 Davr Klaviaturadan chiqib ketish
SIGQUIT 3 Core Klaviaturadan chiqing
SIGILL 4 Core Noqonuniy yo'l-yo'riq
SIGABRT 6 Core Bekor qilishni bekor qilish signali (3)
SIGFPE 8 Core O'zgaruvchan nuqta istisnosiz
SIGKILL 9 Davr O'ldirish signali
SIGSEGV 11 Core Xotira arizasi noto'g'ri
SIGPIPE 13 Davr Buzilgan quvur: hech qanday o'quvchi bilan quvurga yozing
SIGALRM 14 Davr Uyg'otkich signalidan taymer (2)
SIGTERM 15 Davr Bekor qilish signali
SIGUSR1 30,10,16 Davr Foydalanuvchi tomonidan belgilangan signal 1
SIGUSR2 31,12,17 Davr Foydalanuvchi tomonidan belgilangan signal 2
SIGCHLD 20,17,18 Ign Bola to'xtatildi yoki tugatildi
SIGCONT 19,18,25 To'xtatilsa, davom eting
SIGSTOP 17,19,23 To'xta To'xtatish jarayoni
SIGTSTP 18,20,24 To'xta Tty-da terish to'xtatilsin
SIGTTIN 21,21,26 To'xta fon jarayoni uchun tty usuli
SIGTTOU 22,22,27 To'xta orqa fon jarayonida tty chiqishi

SIGKILL va SIGSTOP signallari ushlanishi, bloklanishi yoki e'tiborsizlanishi mumkin emas.

Keyinchalik SOSv2 va SUSv3 / POSIX 1003.1-2001 da tasvirlangan POSIX.1 standartida bo'lmagan signallarni.

Signal Qiymat Harakat Fikr
SIGPOLL Davr So'zga chiqadigan voqea (Sys V). SIGIO ning sinonimi
SIGPROF 27,27,29 Davr Profilni taymer vaqti tugadi
SIGSYS 12, -, 12 Core Muntazam xatti-harakatlarning yomonligi (SVID)
SIGTRAP 5 Core Track / breakpoint tuzoq
SIGURG 16,23,21 Ign Soketda shoshilinch holat (4.2 BSD)
SIGVTALRM 26,26,28 Davr Virtual budilnik (4.2 BSD)
SIGXCPU 24,24,30 Core CPU vaqtining chegarasi oshib ketdi (4.2 BSD)
SIGXFSZ 25,25,31 Core Fayl hajmi chegarasi oshib ketdi (4.2 BSD)

SIGSYS , SIGXCPU , SIGXFSZ va SIGBUS (SPARC va MIPS tashqari) arxitekturasidagi xatti-harakatlar Linux 2.2 ga qadar va shu jumladan, shu jumladan ( yadrosiz ). (Ba'zi bir boshqa SIGXCPU va SIGXFSZ standart harakati asosiy yadrosiz jarayonni tugatishdir.) Linux 2.4 ushbu signallarga nisbatan POSIX 1003.1-2001 talablariga mos keladi, bu jarayon yadroli damp bilan ishlaydi.

Keyingi boshqa signallar.

Signal Qiymat Harakat Fikr
SIGEMT 7, -, 7 Davr
SIGSTKFLT -, 16, - Davr Stokt halokati protsessorga (ishlatilmaydi)
SIGIO 23,29,22 Davr I / U endi mumkin (4.2 BSD)
SIGCLD -, -, 18 Ign SIGCHLD uchun sinonim
SIGPWR 29,30,19 Davr Elektr uzluksizligi (tizim V)
SIGINFO 29, -, - SIGPWR uchun sinonim
SIGLOST -, -, - Davr Fayl himoyasi yo'qoldi
SIGWINCH 28,28,20 Ign Oyna qayta o'lchamlarini uzatish (4,3 UX, Quyosh)
SIGUNUSED -, 31, - Davr Foydalanilmagan signal (SIGSYS bo'ladi)

(29- sonli alfada SIGINFO / SIGPWR , lekin SIGLOST- da sparc ).

SIGEMT POSIX 1003.1-2001 da ko'rsatilmaydi, lekin u boshqa bir qancha Unislarda paydo bo'ladi, u erda odatiy ish odatda yadroli dump bilan jarayonni tugatadi.

SIGPWR (POSIX 1003.1-2001 da ko'rsatilmagan) odatda ko'rinadigan boshqa Unis-larda odatiy tarzda e'tiborsiz qoladi.

SIGIO (POSIX 1003.1-2001 da ko'rsatilmagan) bir nechta boshqa Units-da sukut bo'yicha e'tiborsiz hisoblanadi.

Haqiqiy vaqtda signallar

Linux aslida POSIX.4 real-time kengaytmalarida aniqlanganidek, real vaqtda signallarni qo'llab-quvvatlaydi (va endi POSIX 1003.1-2001 da mavjud). Linux 32 ( SIGRTMIN ) dan 63gacha ( SIGRTMAX ) raqamlangan 32 real vaqtda signallarni qo'llab-quvvatlaydi. (Dasturlar doimo SIGRTMIN + n nishoni yordamida real vaqtda signallarga murojaat qilishlari kerak, chunki real vaqt signal raqamlari oralig'i Unislar bo'ylab farq qiladi.)

Standart signallardan farqli o'laroq, real vaqt signallari oldindan belgilanmagan ma'noga ega emas: real vaqtda signallarning butun majmui qo'llaniladigan maqsadlar uchun ishlatilishi mumkin. (Shunga qaramasdan, LinuxThreads ilovasi dastlabki uchta real vaqtda signalni ishlatadi.)

Ishlanmagan real vaqtda signal uchun standart ish qabul qilish jarayonini tugatish hisoblanadi.

Haqiqiy vaqt signallari quyidagilar bilan ajralib turadi:

  1. Haqiqiy vaqtli signallarning bir nechta nusxalari navbatga qo'yilishi mumkin. Bunga javoban, agar bu signal hozircha bloklangan bo'lsa, standart signalning bir nechta misoli keltirilsa, faqat bitta misol kuyruksa.
  2. Agar signal sigquue (2) orqali yuborilsa , signal bilan birga beradigan qiymat (yoki tamsayı yoki marker) yuborilishi mumkin. Agar qabul qilish jarayoni SA_SIGACTION bayrog'ini sigaction (2) ga ishlatib, ushbu signal uchun bir dastakchani o'rnatgan bo'lsa, bu ma'lumotni ishlovchiga ikkinchi argument sifatida qabul qilingan siginfo_t strukturasining si_value maydonidan olish mumkin. Bundan tashqari, ushbu strukturaning si_pid va si_uid maydonlari PID va signalni yuboradigan jarayonning haqiqiy foydalanuvchi identifikatorini olish uchun ishlatilishi mumkin.
  3. Haqiqiy vaqt signallari kafolatlangan tartibda yetkaziladi. Bir xil turdagi bir nechta real vaqtda signallar yuborilgan tartibda yetkaziladi. Jarayonga turli real vaqtda signallar yuborilsa, ular eng past raqamli signal bilan boshlanadi. (Ya'ni, past raqamli signallar ustuvor ahamiyatga ega.)

Agar standart va real vaqt signallari bir jarayon uchun kutilsa, POSIX aniqlanmagan qoldirib, uni birinchi bo'lib etkazib beradi. Linux, ko'plab boshqa dasturlar kabi, bu holatda standart signallarga ustuvor ahamiyatga ega.

POSIX ma'lumotlariga ko'ra, amaliyot jarayonga hech bo'lmaganda _POSIX_SIGQUEUE_MAX (32) real vaqt signallari bilan navbatda bo'lishiga ruxsat berish kerak. Biroq, har bir jarayon uchun cheklovni qo'yishdan ko'ra, Linux barcha jarayonlarga navbatdagi real vaqtda signallarning soniga tizim bo'yicha cheklov qo'yadi.

Ushbu limitni / proc / sys / kernel / rtsig-max fayli orqali o'zgartirilishi mumkin (va imtiyoz bilan). Taqdim etilgan fayl, / proc / sys / kernel / rtsig-max , hozirgi vaqtda qancha real vaqtda signallarning navbatda turganligini aniqlash uchun ishlatilishi mumkin.

MUVOFIQ

POSIX.1

Muhim: shaxsiy kompyuteringizda buyruq qanday ishlatilishini ko'rish uchun man buyrug'ini ( % man ) ishlating.