C ++ 'daki signal () işlevi, belirtilen sinyal için hata işleyiciyi ayarlar.
signal () Prototip
void (* sinyal (int sig, void (* func) (int))) (int);
signal
Fonksiyon sinyal işlemek için bir yöntem tanımlar. Sinyal işleyici, aşağıdaki eylemlerden biri gerçekleştirilecek şekilde ayarlanabilir:
- Varsayılan sinyal işleme.
- Sinyali görmezden gelin.
- Sinyali işlemek için kullanıcı tanımlı işlev çağrılır.
Başlık dosyasında "> başlık dosyasında tanımlanır.
signal () Parametreler
- sig: Sinyal işleyici tarafından işlenecek sinyal. Aşağıdaki değerlerden birini alabilir:
- SIGABRT
- SIGFPE
- SIGILL
- SIGINT
- SIGSEGV
- SİGTERM
- işleyici: Sinyali işleyen sinyal işleyici. Aşağıdakilerden biri olabilir:
- SIG_DFL: Varsayılan işleme.
- SIG_IGN: Sinyali yok sayın.
- Bir işlevin işaretçisi: Sinyali işlemek için kullanıcı tanımlı işlev. İşlevin imzası aşağıdakine eşdeğer olmalıdır:
void fun (int sig);
signal () Dönüş değeri
Başarı halinde, önceki sinyal işleyicisini döndürür ve başarısız olması durumunda SIG_ERR döndürülür.
Örnek: signal () işlevi nasıl çalışır?
#include #include using namespace std; sig_atomic_t signalled = 0; void handler(int sig) ( signalled = 1; ) int main() ( signal(SIGINT, handler); raise(SIGINT); if (signalled) cout << "Signal is handled"; else cout << "Signal is not handled"; return 0; )
Programı çalıştırdığınızda, çıktı:
Sinyal işleniyor