Gelişmiş Sinyal İşleme
Önceki Sinyal Eylemlerinin Belirtilmesi Sonraki
Gelişmiş Sinyal İşleme
sigaction işlevi signal işlevi ile aynı temel etkiye sahiptir: bir sinyalin süreç tarafından nasıl işleneceği belirtilir. Farklı olarak, sinyalin üretilmesi ve eylemcinin çağrılması ile ilgili çeşitli denetim seçenekleri belirtebilirsiniz.
sigaction işlevi signal.h başlık dosyasında bildirilmiştir.
struct sigaction
veri türü
struct sigaction türündeki yapılar, sigaction işlevinde belli bir sinyalin nasıl işleneceği hakkındaki bilgilerin belirtilmesi için kullanılır. Bu yapı en azından aşağıdaki üyeleri içerir:
sighandler_t sa_handler
signal işlevindeki eylem argümanının yerine geçer. Değer olarak, SIG_DFL, SIG_IGN veya bir işlev göstericisi alır. Bkz. Basit Sinyal İşleme.
sigset_t sa_mask
Eylemci çalışırken engellenecek sinyalleri belirtmek içindir. Sinyallerin engellenmesi Eylemci Çalışırken Sinyallerin Engellenmesi bölümünde anlatılmıştır. Alınan bir sinyal, eylemcisi başlatılmadan önce öntanımlı olarak özdevinimli engellenir; bu, sa_mask'ın değerine bakılmaksızın böyledir. Bir sinyalin eylemcisi nedeniyle engellenmemesini istiyorsanız eylemci içindeki kodu sinyalin engellenmemesini sağlayacak şekilde yazmalısınız.
int sa_flags
Burada, sinyalin davranışını etkileyebilen çeşitli seçenekler belirtilebilir. Bunlar sigaction Seçenekleri bölümünde daha ayrıntılı olarak açıklanmıştır.
int sigaction
(int                              sinyalnum,
 const struct sigaction *restrict eylem,
 struct sigaction *restrict       eski-eylem)
işlev
eylem argümanı ile sinyalnum sinyali için yeni bir eylem belirtilirken, eski-eylem argümanı, bu sembolle ilişkili evvelki eylem hakkında bilgi döndürmek için kullanılır. (başka bir deyişle, eski-eylem argümanı signal işlevinin dönüş değeri gibi kullanılmıştır. Bununla eski eylemin ne olduğuna bakabilir ve isterseniz bu eylemi tekrar yerinde bırakmak anlamında etkinleştirebilirsiniz.)
Hem eylem hem de eski-eylem birer boş gösterici olabilir. eski-eylem bir boş gösterici ise, sinyalnum sinyali ile ilişkili eylem değişmez; bu, bir sinyalin işlenme şeklini değiştirilmeksizin o sinyalin işlenmesi ile ilgili bilgi edinmenizi mümkün kılar.
sigaction başarılı olduğunda sıfır ile aksi takdirde -1 ile döner. Aşağıdaki bu işlev ile ilişkili errno değerleri bulunmaktadır:
EINVAL
sinyalnum argümanı geçersiz; ya da SIGKILL veya SIGSTOP sinyali yoksayılmaya ya da yakalanmaya çalışılıyor.
Önceki Üst Ana Başlık Sonraki
Basit Sinyal İşleme Başlangıç signal ve sigaction arasındaki etkileşim
Bir Linux Kitaplığı Sayfası