signal(7) 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.
   

ÇEVİREN

Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Kasım 2003