C / C++ Sinyal İşleme


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.——-


——-Bu kodlar ne gösteriyor peki?——-

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s