Kendine Sinyal Gönderme
Önceki Sinyallerin Üretilmesi Sonraki
Kendine Sinyal Gönderme
Bir sürecin kendine sinyal göndermesi için raise işlevi kullanılır. Bu işlev signal.h başlık dosyasında bildirilmiştir.
int raise
(int sinyalnum)
işlev
işlev çağrıldığı sürece sinyalnum sinyalini gönderir. İşlem başarılı olursa sıfırla, aksi takdirde sıfırdan farklı bir değerle döner. Başarısızlığın tek sebebi sinyalnum değerinin geçersiz olmasıdır.
int gsignal
(int sinyalnum)
işlev
raise ile aynı işi yapar; sadece SVID uyumluluğu için vardır.
raise işlevinin genellikle kullanıldığı tek yer yakalanan sinyalin öntanımlı davranışını yeniden üretmektir. Örneğin, yazılımınızın bir kullanıcısının SUSP karakterini (C-z; bkz. Özel Karakterler) tuşladığını varsayalım. Bu işlem yazılıma etkileşimli durdurma sinyalinin (SIGTSTP) gönderilmesine sebep olur. Bu durumda siz de durdurma öncesi bazı tamponları temizlemek istersiniz. Bunu da şöyle yaparsınız:
#include <signal.h>

/* Bir durdurma sinyali geldiğinde, eylemi önce öntanımlı eyleme
   ayarlayalım, temizliği yaptıktan sonra da sinyali yeniden
   gönderelim. */

void
tstp_handler (int sig)
{
  signal (SIGTSTP, SIG_DFL);
  /* Temizlik işlemleri */
  ...
  raise (SIGTSTP);
}

/* Süreç çalışmaya kaldığı yerden devam edeceği zaman
   sinyal eylemciyi yeniden kuralım. */

void
cont_handler (int sig)
{
  signal (SIGCONT, cont_handler);
  signal (SIGTSTP, tstp_handler);
}

/* Her iki eylemciyi de yazılım başlatıldığında etkinleştirelim. */

int
main (void)
{
  signal (SIGCONT, cont_handler);
  signal (SIGTSTP, tstp_handler);
  ...
}
Taşınabilirlik Bilgisi
raise işlevi ISO C komisyonu tarafından tasarlanmıştır. Daha eski sistemler işlevi desteklemeyebilir, bu bakımdan kill işlevinin kullanılması daha taşınabilir olacaktır. Bkz. Başka Bir Sürece Sinyal Gönderme.
Önceki Üst Ana Başlık Sonraki
Sinyallerin Üretilmesi Başlangıç Başka Bir Sürece Sinyal Gönderme
Bir Linux Kitaplığı Sayfası