Sinyaller
Linux işletim sistemlerinde, bir sinyal bir programa bir şeylerin gerçekleştiğini bildiren bir uyarıdır. Sinyal yazılımsal kesintilerdir ve birçok kullanım alanları vardır:
Kullanıcı tarafından gönderilen sinyal: Kullanıcı, Ctrl-C veya Ctrl-Z gibi özel terminal tuşlarına basarak işlemleri sonlandırabilir, durdurabilir veya askıya alabilir.
Donanım sorunları: Donanım ile ilgili bir sorun oluştuğunda çekirdek (kernel) bu durumu process'e bildirmek için sinyal kullanır.
Yazılım sorunları: Yazılım ile ilgili bir hata oluştuğunda çekirdek durumu process'e sinyal ile bildirir.
Process iletişimi: Sinyal temelde process'lerin birbirleriyle iletişim kurmasının bir yoludur.
Sinyal İşlemleri
Bir sinyal bir olay tarafından oluşturulduğunda, process'e iletilmek üzere sıraya alınır. Process çalışır durumda olduğunda sinyal teslim edilir. Ancak process'lerin sinyal maskeleri vardır ve bu maskeler sayesinde belirli sinyallerin iletilmesini engelleyebilirler. Bir sinyal iletildiğinde process şunları yapabilir:
Sinyalı yok say: Process sinyali hiç almamış gibi davranabilir.
Sinyal yakalayıcı kullanmak: Process sinyali "yakalayabilir" ve özel bir işleyici rutini çalıştırabilir.
Process sonlandırma: Process normal çıkış sistem çağrısı yerine sonlandırılabilir.
Sinyal engelleme: Process sinyal maskesine bağlı olarak sinyali engelleyebilir.
Ortak Sinyal Türleri
Her sinyal, sembolik isimlerle birlikte tamsayılarla tanımlanır (örneğin SIGxxx). En yaygın kullanılan bazı sinyaller şunlardır:
SIGHUP (HUP) veya 1: Bağlantı kesilmesi
SIGINT (INT) veya 2: Kesinti
SIGKILL (KILL) veya 9: Sonlandırma
SIGSEGV (SEGV) veya 11: Segmentasyon hatası
SIGTERM (TERM) veya 15: Yazılım sonlandırması
SIGSTOP (STOP): Durdurma
Sinyal numaraları farklılık gösterebileceğinden, genellikle isimleriyle anılırlar. Bazı sinyaller engellenemez, örneğin SIGKILL (KILL) sinyalidir. Bu sinyal process'i sonlandırır.
Last updated