Sinyal Alımının Sınanması
Önceki Sinyallerin Engellenmesi Sonraki
Sinyal Alımının Sınanması
Basit bir örnekle açıklayalım. SIGALRM sinyali için bir eylemci oluşturduğunuzu, bununla bir değişkene değer atadığınızı ve zaman zaman azılım içinde bu değişkene baktığınızı ve onu sıfırladığınızı varsayalım. Kodun kritik parçaları icra edilirken SIGALRM sinyallerinin alınmasından sigprocmask çağrıları ile aşağıdaki gibi kaçınabilirsiniz:
/* Bu değişkene SIGALRM sinyal eylemcisi değer atayacak. */
volatile sig_atomic_t flag = 0;

int
main (void)
{
  sigset_t block_alarm;

  ...

  /* Sinyal maskesini ilklendirelim. */
  sigemptyset (&block_alarm);
  sigaddset (&block_alarm, SIGALRM);

  while (1)
    {
      /* Bir sinyal gelmiş mi bakalım. Gelmişse değişkeni sıfırlayalım. */
      sigprocmask (SIG_BLOCK, &block_alarm, NULL);
      if (flag)
        {
          sinyal alınmamışsa yapılacak işlemler
          flag = 0;
        }
      sigprocmask (SIG_UNBLOCK, &block_alarm, NULL);

      ...
    }
}
Önceki Üst Ana Başlık Sonraki
Sürecin Sinyal Maskesi Başlangıç Eylemci Çalışırken Sinyallerin Engellenmesi
Bir Linux Kitaplığı Sayfası