BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <signal.h> > signal

signal() fonksiyonu

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.