Siqnal - Linux / Unix Command

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ış

SIGKILLSİ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 , SIGXFSZSIGBUS (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. ( SIGXCPUSIGXFSZ üçü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:

  1. 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.
  2. 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_pidsi_uid sahələri PID və siqnal göndərmə prosesinin real istifadəçi identifikasiyası əldə etmək üçün istifadə edilə bilər.
  3. 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.