İSİM
signal − kullanılabilir sinyallerin listesi
AÇIKLAMA
Linux hem POSIX güvenilir sinyallerini (bundan sonra "standart sinyaller" denecektir) hem de POSIX gerçek zamanlı sinyallerini destekler.
Standart
Sinyaller
Linux aşağıda listelenen standart sinyalleri
desteklemektedir. Sinyal numaralarının
bazıları "Değer" sütununda
görüldüğü gibi mimariye
bağımlıdır. (Üç değer
verilen yerlerde ilk değer genelde alpha ve sparc
içindir, ortadaki değer i386, ppc ve sh
için, sonuncusu ise mips içindir. −
işareti sinyalin o mimaride
bulunmadığını gösterir.)
Tablonun "Eylem" sütunundaki girdiler sinyallerin öntanımlı eylemlerini gösterir:
Son |
Öntanımlı eylem sürecin sonlandırılmasıdır. | ||
Yok |
Öntanımlı eylem sinyalin yoksayılmasıdır. | ||
Core |
Öntanımlı eylem sürecin sonlandırılması ve core dosyası çıktılanmasıdır. | ||
Dur |
Öntanımlı eylem sürecin durdurulmasıdır. |
Sinyaller ilk defa orginal POSIX.1 standardında açıklanmıştır.
Sinyal
Değer Eylem Açıklama
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
SIGHUP 1 Son Denetleyen uçbirimde hangup
saptandı
veya denetleyen sürecin ölümü
SIGINT 2 Son Klavyeden sistem kesmesi
SIGQUIT 3 Core Klavyeden çıkış
SIGILL 4 Core Kuraldışı komut
SIGABRT 6 Core abort(3)'den çık sinyali
SIGFPE 8 Core Kayan nokta hatası
SIGKILL 9 Son Öldür sinyali
SIGSEGV 11 Core Bellek başvurusu geçersiz
SIGPIPE 13 Son Kırık boruhattı: okuyucusu
olmayan boruya yazma
SIGALRM 14 Son alarm(2)'den zamanlayıcı
sinyali
SIGTERM 15 Son Sonlandırma sinyali
SIGUSR1 30,10,16 Son Kullanıcı
tanımlı sinyal 1
SIGUSR2 31,12,17 Son Kullanıcı
tanımlı sinyal 2
SIGCHLD 20,17,18 Yok Alt süreç durdu ya da
sonlandırıldı
SIGCONT 19,18,25 Durmuşsa devam etsin
SIGSTOP 17,19,23 Dur Süreci durdur
SIGTSTP 18,20,24 Dur tty'de yazmayı durdur
SIGTTIN 21,21,26 Dur artalan süreci için tty
girdisi
SIGTTOU 22,22,27 Dur artalan süreci için tty
çıktısı
SIGKILL ve SIGSTOP sinyalleri yakalanamaz, engellenemez ve yoksayılamaz.
Aşağıdaki sinyaller POSIX.1 standardında yoktur, SUSv2 ve SUSv3 / POSIX 1003.1−2001 standartlarında açıklanmıştır.
Sinyal
Değer Eylem Açıklama
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
SIGBUS 10,7,10 Core Taşıt hatası
(hatalı bellek erişimi)
SIGPOLL Son Kutuplanabilir olay (Sys V). SIGIO ile
aynı.
SIGPROF 27,27,29 Son Profilleme
zamanlayıcısında zamanaşımı
SIGSYS 12,−,12 Core İşlev
argümanı hatalı (SVID)
SIGTRAP 5 Core İz sürme/noktasal durdurma
kapanı
SIGURG 16,23,21 Yok Soket üzerinde acil durum (4.2
BSD)
SIGVTALRM 26,26,28 Son Sanal uyarı saati (4.2 BSD)
SIGXCPU 24,24,30 Core İşlemci zaman
sınırı aşıldı (4.2 BSD)
SIGXFSZ 25,25,31 Core Dosya boyut sınırı
aşıldı (4.2 BSD)
Linux 2.2 dahil ve daha öncesinde SIGSYS, SIGXCPU, SIGXFSZ ve (SPARC ve MIPS dışındaki mimarilerde) SIGBUS sinyali için öntanımlı davranış (core çıktılanmaksızın) süreci sonlandırmaktı. (SIGXCPU ve SIGXFSZ sinyali için bazı Unix'lerde öntanımlı davranış bir core çıktılamaksızın süreci sonlandırmak şeklindedir.) Linux 2.4 bu sinyaller için POSIX 1003.1−2001 gereksinimlerine uygun olarak süreci sonlandırırken bir core çıktılamaktadır.
Diğer sinyaller aşağıdadır:
Sinyal
Değer Eylem Açıklama
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
SIGIOT 6 Core IOT kapanı. SIGABRT ile
eşanlamlı
SIGEMT 7,−,7 Son
SIGSTKFLT −,16,− Son ek işlemcide
yığıt hatası (kullanılmadı)
SIGIO 23,29,22 Son G/Ç şimdi
nümkün (4.2 BSD)
SIGCLD −,−,18 Yok SIGCHLD ile
eşanlamlı
SIGPWR 29,30,19 Son Güç kaybı (System
V)
SIGINFO 29,−,− SIGPWR ile
eşanlamlı
SIGLOST −,−,− Son Dosya kilidi
kaybı
SIGWINCH 28,28,20 Yok Pencere boyutlandırma sinyali
(4.3 BSD, Sun)
SIGUNUSED −,31,− Son
Kullanılmamış sinyal (SIGSYS olacak)
29 numaralı sinyal bir alpha için SIGINFO / SIGPWR iken sparc için SIGLOST'dur.
SIGEMT sinyali POSIX 1003.1−2001 standardında belirtilmemesine rağmen çoğu Unix'de rastlandığı yerde öntanımlı eylem olarak genellikle süreci sonlandırır ve bir core çıktılar.
SIGPWR (POSIX 1003.1−2001 standardında belirtilmemiştir) sinyali de bu Unix'lerde rastlandığı yerde öntanımlı eylem olarak genellikle yoksayılır.
SIGIO (POSIX 1003.1−2001 standardında belirtilmemiştir) sinyali de başka birçok Unix'de öntanımlı olarak yoksayılır.
Gerçek
Zamanlı Sinyaller
Linux, POSIX.4'de tanımlı (ve şimdi POSIX
1003.1−2001'de de bulunan) gerçek zamanlı
oluşumlar olarak gerçek zamanlı sinyalleri
destekler. Linux, 32'den (SIGRTMIN) 63'e
(SIGRTMAX) kadar numaralı 32 tane gerçek
zamanlı sinyal destekler. (Gerçek zamanlı
sinyallerin aralıkları Unix'ler arasında
değişiklik gösterdiğinden, uygulamalar
gerçek zamanlı sinyalleri daima
SIGRTMIN+n sözdizimi ile
kullanmalıdır.)
Standart sinyallerin tersine gerçek zamanlı sinyallerin önceden tanımlı anlamları yoktur: gerçek zamanlı sinyallerin tümü uygulama tanımlı amaçlar için kullanılır. (Yine de gerçek zamanlı sinyallerin ilk üçünü LinuxThreads oluşumları kullanır.)
Gerçek zamanlı sinyaller aşağıdaki özelliklere sahiptir:
1. |
Gerçek zamanlı sinyallerin çoklu gerçeklemeleri kuyruklanabilir. Tersine olarak, bir standart sinyal bloklanmış olduğu halde çoklu gerçeklemeleri kulanılmışsa sadece bir gerçeklemesi kuyruklanabilir. | ||
2. |
Bir sinyal sigqueue(2) kullanılarak gönderilmişse, sinyalle birlikte bir değer (bir tamsayı ya da gösterici) gönderilebilir. Sinyali alan süreç sigaction(2)'la SA_SIGACTION bayrağını kullanarak bu sinyal için bir tutucu oluşturursa, bu süreç veriyi, tutucuya ikinci argüman olarak aktarılan siginfo_t yapısının si_value alanı üzerinden sağlayabilir. Diğer taraftan, bu yapının si_pid ve si_uid alanları sinyali gönderen sürecin gerçek kullanıcı kimliği ile süreç kimliğini (PID) elde etmekte kullanılabilir. | ||
3. |
Gerçek zamanlı sinyaller garanti edilmiş bir sırada teslim edilir. Aynı türdeki çoklu gerçek zamanlı sinyaller gönderildikleri sırayla teslim edilir. Bir sürece farklı gerçek zamanlı sinyaller gönderilmişse, en düşük numaralı sinyalden başlayarak teslim edilirler (yani düşük numaralı sinyallerin önceliği daha yüksektir.). |
Eğer bir süreç için hem standart hem de gerçek zamanlı sinyaller askıdaysa, POSIX hangisinin önce teslim edileceğini belirlememiştir. Linux, benzer bir çok gerçeklemede olduğu gibi böyle bir durumda standart sinyallere öncelik verir.
POSIX'e uygun olarak, bir oluşum, bir sürece kuyruklanacak gerçek zamanlı sinyallerin sayısının en azından _POSIX_SIGQUEUE_MAX (32) olmasına izin vermelidir. Bunula birlikte, süreç başına bir sınır koymaktansa, Linux tüm süreçler için kuyruklanacak gerçek zamanlı sinyallerin sayısı için sistem çapında bir sınır koyar. Bu sınır /proc/sys/kernel/rtsig−max dosyasında görülebilir ve izinlere bağlı olarak değiştirilebilir. /proc/sys/kernel/rtsig−max ile ilgili bir dosya ile de kaç tane gerçek zamanlı sinyalin kuyruklanmış olduğu görülebilir.
UYUMLULUK
POSIX.1
YAZILIM HATALARI
SIGIO ve SIGLOST aynı değere sahiptir. Sonuncusu çekirdek kaynak kodunda iptal edilmiştir, ancak hala bazı yazılımların derleme süreçleri 29 numaralı sinyalin SIGLOST olduğunu düşünüyor.
İLGİLİ BELGELER
kill(1), kill(2), setitimer(2), sigaction(2), signal(2), sigprocmask(2), mask(2), sigqueue(2).
ÇEVİREN
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Kasım 2003