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