Linux, POSIX güvenilir sinyallerini (bundan böyle "standart sinyaller") ve POSIX gerçek zamanlı sinyallerini destekler.
Standart sinyaller
Linux aşağıda listelenen standart sinyalleri destekler. Birkaç değer, "Değer" sütununda belirtildiği gibi mimariye bağımlıdır. (Üç değer verildiğinde, ilki genellikle alfa ve sparc için, i386 için orta olan, ppc ve sh ve sonuncusu için geçerlidir).
A - ilgili mimaride bir sinyalin bulunmadığını gösterir.
Tablonun "Eylem" sütunundaki girişler, aşağıdaki gibi sinyal için varsayılan eylemi belirtir:
terim
Varsayılan eylem işlemi sonlandırmaktır.
Kontak
Varsayılan eylem sinyali yok saymaktır.
çekirdek
Varsayılan eylem, işlemi ve döküm çekirdeğini sonlandırmaktır.
durdurmak
Varsayılan eylem işlemi durdurmaktır.
İlk önce orijinal POSIX.1 standardında açıklanan sinyaller.
işaret | değer | Aksiyon | Yorum Yap |
veya kontrol sürecinin ölümü | |||
SIGINT | 2 | terim | Klavyeden kesme |
SIGOUT | 3 | çekirdek | Klavyeden çık |
SIGILL | 4 | çekirdek | Yasa Dışı Talimat |
SIGABRT | 6 | çekirdek | Durdurma bildirimi iptal edildi (3) |
SIGFPE | 8 | çekirdek | Kayan nokta istisnası |
sigkill | 9 | terim | Sinyali öldür |
SIGSEGV | 11 | çekirdek | Geçersiz hafıza referansı |
SIGPIPE | 13 | terim | Kırık boru: hiçbir okuyucu ile boruya yazmak |
SIGALRM | 14 | terim | Alarmdan zamanlayıcı sinyali (2) |
SIGTERM | 15 | terim | Sonlandırma sinyali |
SIGUSR1 | 30,10,16 | terim | Kullanıcı tanımlı sinyal 1 |
SIGUSR2 | 31,12,17 | terim | Kullanıcı tanımlı sinyal 2 |
SIGCHLD | 20,17,18 | Kontak | Çocuk durdu veya sonlandırıldı |
SIGCONT | 19,18,25 | Durdurulmuşsa devam et | |
SIGSTOP | 17,19,23 | durdurmak | Işlemi durdur |
SIGTSTP | 18,20,24 | durdurmak | Tty'de yazmayı bırakın |
SIGTTIN | 21,21,26 | durdurmak | arka plan işlemi için tty girişi |
SIGTTOU | 22,22,27 | durdurmak | arka plan işlemi için tty çıkışı |
SIGKILL ve SIGSTOP sinyalleri yakalanamaz, engellenemez veya göz ardı edilemez.
Daha sonra POSIX.1 standardında olmayan ancak SUSv2 ve SUSv3 / POSIX 1003.1-2001'de açıklanan sinyaller.
işaret | değer | Aksiyon | Yorum Yap |
SIGPOLL | terim | Pollable olayı (Sys V). SIGIO'un eşanlamlısı | |
SIGPROF | 27,27,29 | terim | Profil zamanlayıcısının süresi doldu |
SIGSYS | 12, - 12 | çekirdek | Rutin için yanlış argüman (SVID) |
SIGTRAP | 5 | çekirdek | İz / kesme noktası kapanı |
SIGURG | 16,23,21 | Kontak | Soket üzerinde acil durum (4.2 BSD) |
SIGVTALRM | 26,26,28 | terim | Sanal alarm saati (4.2 BSD) |
SIGXCPU | 24,24,30 | çekirdek | CPU zaman sınırı aşıldı (4.2 BSD) |
SIGXFSZ | 25,25,31 | çekirdek | Dosya boyutu sınırı aşıldı (4.2 BSD) |
Linux 2.2'ye kadar ve dahil olmak üzere SIGSYS , SIGXCPU , SIGXFSZ ve (SPARC ve MIPS dışındaki mimarilerde) varsayılan davranışı SIGBUS , işlemi (çekirdek dökümü olmayan) sonlandırmaktı. (Diğer bazı Uniselerde SIGXCPU ve SIGXFSZ için varsayılan eylem çekirdek bir dökümü olmadan işlemi sonlandırmaktır.) Linux 2.4, bu sinyaller için POSIX 1003.1-2001 gerekliliklerine uymakta, işlemi çekirdek dökümüyle sonlandırmaktadır.
Diğer çeşitli sinyaller.
işaret | değer | Aksiyon | Yorum Yap |
SIGEMT | 7, -, 7 | terim | |
SIGSTKFLT | -, 16, - | terim | Eş işlemcideki yığın hatası (kullanılmamış) |
SIGIO | 23,29,22 | terim | I / O şimdi mümkün (4.2 BSD) |
SIGCLD | -, -, 18 | Kontak | SIGCHLD için bir eşanlamlı |
SIGPWR | 29,30,19 | terim | Elektrik kesintisi (Sistem V) |
SIGINFO | 29 -, - | SIGPWR için bir eşanlamlı | |
SIGLOST | -, -, - | terim | Dosya kilidi kayboldu |
SIGWINCH | 28,28,20 | Kontak | Pencere yeniden boyutlandırma sinyali (4.3 BSD, Sun) |
SIGUNUSED | - 31 - | terim | Kullanılmayan sinyal (SIGSYS olacaktır) |
(Sinyal 29, bir alfa üzerinde SIGINFO / SIGPWR ve bir sparc üzerinde SIGLOST'tur .)
SIGEMT , POSIX 1003.1-2001'de belirtilmemiştir, ancak yine de, diğer eylemlerin çoğunda, varsayılan eyleminin genellikle bir çekirdek dökümü ile işlemi sonlandırmak olduğu durumlarda görünür.
SIGPWR (POSIX 1003.1-2001'de belirtilmemiş), varsayılan olarak, göründüğü diğer birimlerde varsayılan olarak yok sayılır.
SIGIO (POSIX 1003.1-2001'de belirtilmemiş), diğer bazı Uniselerde varsayılan olarak yok sayılır.
Gerçek Zamanlı Sinyaller
Linux , orijinal olarak POSIX.4 gerçek zamanlı uzantılarında tanımlanan gerçek zamanlı sinyalleri destekler (ve şimdi POSIX 1003.1-2001'e dahil edilmiştir). Linux 32 ( SIGRTMIN ) ila 63 ( SIGRTMAX ) arasında numaralandırılmış 32 gerçek zamanlı sinyali desteklemektedir. (Programlar, gerçek zamanlı sinyal numaralarının aralığı Unica'lara göre değiştiği için , SIGRTMIN + n notasyonu kullanarak her zaman gerçek zamanlı sinyallere başvurmalıdır.)
Standart sinyallerden farklı olarak, gerçek zamanlı sinyallerin önceden tanımlanmış anlamları yoktur: tüm gerçek zamanlı sinyaller seti uygulama tanımlı amaçlar için kullanılabilir. (Ancak, LinuxThreads uygulamasının ilk üç gerçek zamanlı sinyali kullandığını unutmayın.)
İşlenmemiş bir gerçek zamanlı sinyal için varsayılan eylem, alma işlemini sonlandırmaktır.
Gerçek zamanlı sinyaller aşağıdaki gibi ayırt edilir:
- Birden çok gerçek zamanlı sinyal örneği sıraya alınabilir. Tersine, bu sinyal şu anda engellenirse standart bir sinyalin birden fazla örneği teslim edilirse, o zaman sadece bir örnek sıraya konur.
- Sinyal sigqueue (2) kullanılarak gönderilirse, eşlik eden bir değer (bir tamsayı veya işaretçi) sinyal ile gönderilebilir. Eğer alma işlemi, SA_SIGACTION işaretini sigaction (2) ile kullanarak bu sinyal için bir işleyici kurarsa , bu verileri işleyiciye ikinci argüman olarak iletilen siginfo_t yapısının si_value alanı üzerinden elde edebilir. Ayrıca, bu yapının si_pid ve si_uid alanları, sinyali gönderen işlemin PID ve gerçek kullanıcı ID'sini elde etmek için kullanılabilir.
- Gerçek zamanlı sinyaller garantili bir sırada teslim edilir. Aynı türden çoklu gerçek zamanlı sinyaller gönderildikleri sırada teslim edilir. Bir işleme farklı gerçek zamanlı sinyaller gönderilirse, en düşük numaralı sinyalden başlayarak iletilirler. (Yani, düşük numaralı sinyaller en yüksek önceliğe sahiptir.)
Bir işlem için hem standart hem de gerçek zamanlı sinyaller beklemede ise, POSIX, önce teslim edilmeyen belirtilmemiş bırakır. Linux, diğer birçok uygulama gibi, bu durumda standart sinyallere öncelik verir.
POSIX'e göre, bir uygulama en azından _POSIX_SIGQUEUE_MAX (32) gerçek zamanlı sinyallerin bir işleme sıraya alınmasına izin vermelidir. Bununla birlikte, işlem başına bir limit koymak yerine, Linux tüm süreçler için sıraya alınmış gerçek zamanlı sinyallerin sayısına sistem çapında bir sınır uygular.
Bu sınır, / proc / sys / kernel / rtsig-max dosyası ile değiştirilmiş (ve ayrıcalıklı olarak) görüntülenebilir. İlgili bir dosya / proc / sys / kernel / rtsig-max , kaç tane gerçek zamanlı sinyalin şu anda sıraya konulduğunu bulmak için kullanılabilir.
YAPILMASI
POSIX.1
Önemli: Komutunuzun belirli bir bilgisayarda nasıl kullanıldığını görmek için man komutunu ( % adam ) kullanın.