Sinyal Kümeleri
Önceki Sinyallerin Engellenmesi Sonraki
Sinyal Kümeleri
Sinyal engeleme işlevlerinin tümü sinyal kümesi adı verilen bir veri yapısını kullanırlar. Bu işlem iki kademede yapılır: sinyal kümesi oluşturulur ve bir argüman olarak bir kütüphane işlevine aktarılır.
Bu oluşumlar signal.h başlık dosyasında bildirilmiştir.
sigset_t
(int pgid,
 int sinyalnum)
veri türü
sigset_t veri türü bir sinyal kümesi oluşturmak için kullanılır. Kütüphane içinde bir tamsayı tür ya da bir yapı olarak gerçekleştirilmiş olabilir.
Taşınabilirlik açısından, sigset_t yapısı içindeki veriyi okuma ve değiştirme işlemlerini doğrudan değil, bu bölümde açıklanan işlevleri kullanarak yapmalısınız.
Bir sinyal kümesini oluşturmanın iki yolu vardır. sigemptyset ile boş olduğunu belirtip sinyalleri tek tek eklersiniz. Ya da, sigfillset ile tüm sinyalleri içerdiğini belirtip sinyalleri tek tek silersiniz.
Herhangi bir işlem yapmadan önce sinyal kümesini bu iki işlevden birini kullanarak ilklendirmelisiniz. Sinyal kümesinde sinyalleri bu işlevleri kullanmadan eklemeye ya da silmeye çalışmayın, çünkü sigset_t nesnesinde ilklendirilmesi gereken başka alanlar da (sürüm alanı gibi) olabilir. (Ek olarak, sistemin sizin bildiklerinizden başka sinyalleri içermediği kabulünü yapmanız pek akıllıca olmayacaktır.)
int sigemptyset
(sigset_t *küme)
işlev
Bu işlev küme sinyal kümesini tanımlı hiçbir sinyali içermediği biçimde ilklendirir. Daima 0 ile döner.
int sigfillset
(sigset_t *küme)
işlev
Bu işlev küme sinyal kümesini tanımlı tüm sinyalleri içerdiği biçimde ilklendirir. Daima 0 ile döner.
int sigaddset
(sigset_t *küme,
 int       sinyalnum)
işlev
Bu işlev sinyalnum sinyalini küme sinyal kümesine ekler. sigaddset'ler sadece küme'yi değiştirir, sinyal engelleme/engellememe yapmaz.
Başarılı olursa 0, aksi takdirde -1 ile döner. Aşağıdaki errno değeri bu işlev için tanımlanmıştır:
EINVAL
sinyalnum argümanı geçerli bir sinyal belirtmiyor.
int sigdelset
(sigset_t *küme,
 int       sinyalnum)
işlev
Bu işlev sinyalnum sinyalini küme sinyal kümesinden çıkarır. sigdelset'ler sadece küme'yi değiştirir, sinyal engelleme/engellememe yapmaz. Dönüş değeri ve hata durumları sigaddset işlevindeki gibidir.
Son olarak, bir sinyalin sinyal kümesinde olup olmadığına bakmak için kullanılan bir işlev vardır:
int sigismember
(sigset_t *küme,
 int       sinyalnum)
işlev
sigismember işlevi sinyalnum sinyalinin küme sinyal kümesinin bir üyesi olup olmadığına bakmak için kullanılır. Sinyal, kümenin bir elemanı ise 1 ile, değilse 0 ile, bir hata oluşmuşsa -1 ile döner.
Aşağıdaki errno değeri bu işlev için tanımlanmıştır:
EINVAL
sinyalnum argümanı geçerli bir sinyal belirtmiyor.
Önceki Üst Ana Başlık Sonraki
Sinyalleri Engellemenin Amaçları Başlangıç Sürecin Sinyal Maskesi
Bir Linux Kitaplığı Sayfası