Sinyal İşleme - C++

ServerErr0r

uid=0(root)
Katılım
12 Eyl 2009
Mesajlar
2,330
Reaction score
0
Puanları
0
Beklenmeyen bir olay ya da sinyal, programın beklenenden daha önce sonlanmasına yol açabilir. Bazı beklenmeyen olaylar kesme olabilir. Sinyal işleme kütüphanesi, beklenmeyen olayları signal fonksiyonu ile yakalayabilme yetenegini sunar. signal fonksiyonu iki argüman alır: tamsayı olan bir sinyal sayısı ve sinyal işleme fonksiyonunu gösteren bir gösterici. Sinyaller argüman olarak tamsayı olan bir sinyal sayısı alan raise fonksiyonu tarafından üretilebilirler. Verecegim örnekte raise ve signal fonksiyonlarini görecegiz.

Örnekte, signal fonksiyonunu etkileşimli bir sinyali (SIGINT) yakalamak için kullanmaktadır. Program signal fonksiyonunu, SIGINT ve sinyal_isleyici fonksiyonunu gösteren bir göstericiyle çağırarak başlamaktadır SIGINT tipinde bir sinyal üretildiğinde, kontrol sinyal_isleyici fonksiyonuna geçer, bir mesaj yazdırılır ve kullanıcıya programın normal çalışmasını devam ettirme seçeneği verilir. Eğer kullanıcı programın çalışmasının devamını istiyorsa, signal yeniden çağırılarak sinyal işleyiciye yeni değer verilir. Bu programımızda raise fonksiyonu etkileşimli bir sinyal üretmek için kullanılmıştır. 1 ile 50 arasında rastgele bir sayı seçilmiştir. Eğer sayı 25 ise raise, sinyali üretmek için çağrılmıştır Normalde etkileşimli sinyallere ilk değer programın dışında verilir. Sinyal işleme, etkileşimli sinyali yakalamak ve programın sonlanmasını engellemek için kullanılabilir.

-------signal.h öncü dosyasındaki tanımlı sinyaller-------

SIGABRT => Programın normal olmayan şekilde sonlanması

SIGFPE => Hatalı bir aritmek işlem, örneğin sıfıra bölme ya da taşma ile sonuçlanacak bir işlem.

SIGILL => İllegal emrin tespiti

SIGINT => Etkileşimli sinyalin alınması.

SIGSEGV => Depolamaya geçersiz erişim.

SIGTERM => Programi sonlandirma isteği

-------signal.h öncü dosyasındaki tanımlı sinyaller-------

**************

-------Örnek kodlarımıza bir bakalım isterseniz.-------
msjinl.png




 
Geri
Üst