Bildirim
void (*signal(int sig, void (*func)(int))) (int);
Açıklama
Sinyal işareti için hata işleyicisini ayarlar. Sinyal işleyici ayarlanarak, varsayılan işleyici devreye girer (sinyal yok sayılır) veya kullanıcı tanımlı bir fonksiyon çağrılır.
Sinyallere işlem yapmak için sig parametre değeri ile bir sinyal işlemci fonksiyonu devreye sokulur.
Parametreler
sig: Sinyal işlemcisini ayarlanacağı sinyal değeridir. Bu değer uygulama tanımlı bir değer veya aşağıdaki değerlerden bir olabilir:
SIGINT Genellikle uygulama kullanıcısı tarafından üretilen etkileşimli dikkat sinyali. SIGILL Geçersiz talimat gibi geçersiz fonksiyon çalışması. Bu genellikle koddaki bozulmalardan veya veri kullanma denemelerinden kaynaklanır. SIGFPE Hatalı aritmetik işlem. SIGSEGV Veri depolama birimine geçersiz erişim. SIGTERM Programa gönderilen sonlandırma isteği. SIGBREAK Ctrl-C işlemi. SIGABRT Anormal sonlandırma.
func: Sinyal işlemci fonksiyonudur. Bu fonksiyon kullanıcı tanımlı veya önceden tanımlanmış aşağıdaki fonksiyonlardan biridir:
SIG_DFL Belirli bir sinyale ön tanımlı işleyici tarafından işlem yapılır. SIG_IGN Sinyal dikkate alınmaz.
Dönüş değeri
Başarı durumunda önceki sinyal işleyici değeri, hata durumunda ise SIG_ERR değeri geri döndürülür.
Örnek
#include <stdio.h>
#include <signal.h>
sig_atomic_t SignalStat;
void signal_func(int signal);
int main (void) {
signal(SIGFPE, signal_func);
printf("Sinyal değeri: %d\n", SignalStat);
printf("Sinyal gönderme: %d\n", SIGFPE); /* Float değer hatası */
raise(SIGFPE);
printf("Sinyal değeri: %d", SignalStat);
return 0;
}
void signal_func(int signal)
{
SignalStat = signal;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
Sinyal değeri: 0 Sinyal gönderme: 8 Sinyal değeri: 8
Yukarıdaki program, önce signal() fonksiyonu ile SIGFPE sinyal işareti için signal_func() hata işleyicisini ayarlar. Sonra, raise() fonksiyonu programa SIGFPE sinyali gönderir.