Linux həm POSIX etibarlı sinyallerini (bundan sonra "standart sinyaller"), həm də POSIX real-time sinyallerini dəstəkləyir.
Standart siqnallar
Linux aşağıda göstərilən standart sinyalleri dəstəkləyir. Bir neçə siqnal nömrəsi "dəyər" sütununda göstərildiyi kimi arxitektura asılıdır. (Burada üç dəyər verilir, birincisi adətən alfa və sparc üçün, orta hesabla i386, ppc və sh və sonuncusu myps üçün etibarlıdır.
A - müvafiq memarlıqda bir siqnal olmadığını bildirir.)
Cədvəlin "Fəaliyyət" sütunundakı girişlər aşağıdakı kimi siqnal üzrə göstərilən hərəkətləri göstərir:
Müddət
Varsayılan əməliyyat, prosesi ləğv etməkdir.
Ign
Eyni hərəkət siqnalları görməməzlikdəndir.
Core
Varsayılan fəaliyyət, prosesi və dump core'u ləğv etməkdir.
Dur
Varsayılan əməliyyat, prosesi dayandırmaqdır.
Əvvəlcə orijinal POSIX.1 standartında təsvir edilən siqnallar.
Siqnal | Qiymət | Fəaliyyət | Şərh |
və ya nəzarət prosesinin ölümü | |||
SIGINT | 2 | Müddət | Klaviaturadan kəsin |
Siqquit | 3 | Core | Klaviaturadan çıxın |
SIGILL | 4 | Core | Qanunsuz təlimat |
SIGABRT | 6 | Core | Abortdan imtina siqnalı (3) |
SIGFPE | 8 | Core | Üzən nöqtə istisna |
Siqkill | 9 | Müddət | Siqnal öldürün |
SIGSEGV | 11 | Core | Yanlış yaddaş istinadı |
SIGPIPE | 13 | Müddət | Broken boru: Oxucu olmayan boruya yazın |
SİGALRM | 14 | Müddət | Siqnalizasiya zamanı siqnalı (2) |
SİGTERM | 15 | Müddət | Xitam siqnalı |
SIGUSR1 | 30,10,16 | Müddət | İstifadəçi tərəfindən müəyyən edilmiş siqnal 1 |
SIGUSR2 | 31,12,17 | Müddət | İstifadəçi tərəfindən müəyyən edilmiş siqnal 2 |
SIGCHLD | 20,17,18 | Ign | Uşaq dayandı və ya sona çatdı |
SİGCONT | 19,18,25 | Durdurulsanız davam edin | |
SIGSTOP | 17,19,23 | Dur | Durdurma prosesi |
SIGTSTP | 18,20,24 | Dur | Tty-də yazılmışdır |
SIGTTIN | 21,21,26 | Dur | Arxa prosesi üçün tty giriş |
SIGTTOU | 22,22,27 | Dur | Arxa prosesi üçün tty çıxış |
SIGKILL və SİGSTOP siqnalları tutulmayıb, bloklana və ya məhrum edilə bilməz.
POSIX.1 standartında olmayan, lakin SUSv2 və SUSv3 / POSIX 1003.1-2001-də təsvir edilən sinyalləri.
Siqnal | Qiymət | Fəaliyyət | Şərh |
SIGPOLL | Müddət | Açılan hadisə (Sys V). SIGIO'nin sinonimi | |
SIGPROF | 27,27,29 | Müddət | Profilə timer müddəti başa çatdı |
SIGSYS | 12, -, 12 | Core | Rəqəmsiz (SVİD) düzgün arqument |
SIGTRAP | 5 | Core | Trace / breakpoint tələsi |
SIGURG | 16,23,21 | Ign | Soketdə təcili vəziyyət (4.2 BSD) |
SIGVTALRM | 26,26,28 | Müddət | Virtual zəngli saat (4.2 BSD) |
SIGXCPU | 24,24,30 | Core | CPU müddətinin keçdiyi (4.2 BSD) |
SIGXFSZ | 25,25,31 | Core | Faylın həcmi aşıldı (4.2 BSD) |
SIGSYS , SIGXCPU , SIGXFSZ və SIGBUS (SPARC və MIPS xaricində olan arxitekturalar üzrə) üçün mühüm davranış 2.2.2 və Linux 2.2 daxil olmaqla prosesi ləğv etmək (əsas dökümsiz) idi. ( SIGXCPU və SIGXFSZ üçün nəzərdə tutulan qadağan ) əsasən, Linux 2.4, bu sinyaller üçün POSIX 1003.1-2001 tələblərinə uyğundur və proses əsas dökümü ilə sona çatır.
Daha sonra digər müxtəlif sinyaller.
Siqnal | Qiymət | Fəaliyyət | Şərh |
SİGEMT | 7, -, 7 | Müddət | |
SIGSTKFLT | -, 16, - | Müddət | Stok işarəsi protsessorda (istifadə olunmamış) |
SIGIO | 23,29,22 | Müddət | I / O artıq mümkündür (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | SIGCHLD üçün sinonim |
SIGPWR | 29,30,19 | Müddət | Elektrik kəsilməsi (Sistem V) |
SIGINFO | 29, -, - | SIGPWR üçün sinonim | |
SIGLOST | -, -, - | Müddət | Fayl kilidi itdi |
SIGWINCH | 28,28,20 | Ign | Pəncərə ölçüsünün siqnalı (4.3 BSD, Günəş) |
SIGUNUSED | -, 31, - | Müddət | İstifadə edilməmiş siqnal (SIGSYS olacaq) |
(Siqnal 29 alfada SIGINFO / SIGPWR , lakin sparc üzrə SIGLOST).
SIGEMT POSIX 1003.1-2001-də göstərilmir, lakin əslində bir çox əsaslı dəmir yolu ilə prosesi ləğv etmək üçün adətən fəaliyyət göstərən bir çox digər Unitsdə görünür.
SIGPWR (POSIX 1003.1-2001-də göstərilməmiş) adətən, görünürdəki digər Unis-lərdə default olaraq nəzərə alınmır.
SIGIO (POSIX 1003.1-2001-də göstərilməyən) bir neçə digər Unis-lərdə default olaraq nəzərə alınmır.
Real-time siqnalları
Linux , POSIX.4 real-time uzadılmasında (və indi POSIX 1003.1-2001-də daxil edilir) əvvəlcədən müəyyən edilmiş real-time siqnalları dəstəkləyir. Linux 32 ( SIGRTMIN ) dan 63 ( SIGRTMAX ) nömrələrinə 32 real vaxt siqnalını dəstəkləyir. (Proqramlar həmişə SIGRTMIN + n nüsxəsini istifadə edərək real-time siqnallarına istinad etməlidir, çünki real vaxt sinyali nömrələri Unislər arasında dəyişir.)
Standart sinyallerdən fərqli olaraq, real-vaxt siqnallarının əvvəlcədən təyin edilmiş mənaları yoxdur: real-vaxt sinyallerinin bütün dəsti tətbiq olunan məqsədlər üçün istifadə edilə bilər. (Qeyd edək ki, LinuxThreads proqramının ilk üç real-time sinyali istifadə edir.)
İşlənməmiş bir real vaxt siqnalı üçün başlanğıc hərəkət alma prosesini ləğv etməkdir.
Gerçek zamanlı sinyaller aşağıdakılardır:
- Real-time sinyallerinin birdən çox nümunəsi sıraya oluna bilər. Əksinə, əgər siqnal hazırda bloklanarkən standart bir siqnalın bir nüsxəsi verilirsə, yalnız bir nümunə sıraya qoyulur.
- Siqaret siqnalı (2) vasitəsilə göndərilirsə, siqnal ilə müşayiət olunan dəyər (tamsayı və ya göstərici) göndərilə bilər. Qəbul prosesi SA_SIGACTION bayrağını sigaction (2) üçün istifadə edərək, bu siqnal üçün işəgötürən təyin edərsə, bu məlumatı işəgötürən üçün ikinci arqument kimi qəbul edilən siginfo_t strukturunun si_value sahəsi ilə əldə edə bilərsiniz. Bundan əlavə, bu strukturun si_pid və si_uid sahələri PID və siqnal göndərmə prosesinin real istifadəçi identifikasiyası əldə etmək üçün istifadə edilə bilər.
- Gerçek zamanlı sinyaller garantili bir sırada verilir. Eyni növün birdən çox real-time siqnalları göndərildikləri sırada verilir. Bir müddətə fərqli real-vaxt siqnalları göndərildikdə, ən aşağı nömrəli siqnal ilə başlayırlar. (Yəni, aşağı nömrəli siqnallar yüksək prioritetə malikdir.)
Həm standart, həm də real-vaxt siqnalları bir proses üçün nəzərdə tutulursa, POSIX ilk olaraq təslim olan müəyyənləşdirilmir. Linux, bir çox digər tətbiq kimi, bu vəziyyətdə standart sinyallerə üstünlük verir.
POSIX-in məlumatına görə, bir tətbiq ən azı _POSIX_SIGQUEUE_MAX (32) real-time siqnalların bir prosesə sıralanmasını təmin etməlidir. Bununla belə, proses prosesinə qoyulmaqdan çox, Linux bütün proseslər üçün növbədənkənar real vaxt siqnallarının sayına sistemdə geniş bir limit qoyur.
Bu limit, / proc / sys / kernel / rtsig-max faylı ilə dəyişdirilə bilər (və imtiyazla). Hal-hazırda nə qədər real vaxt sinyallerinin sıraya alındığını öyrənmək üçün əlaqədar fayl, / proc / sys / kernel / rtsig-max , istifadə edilə bilər.
TƏKMİLLƏŞDİR
POSIX.1
Mühüm: Şəxsi kompüterinizdə bir komanda necə istifadə edildiyini görmək üçün man komutunu ( % man ) istifadə edin.