CodeBlanks Logo Icon CodeBlanks

Sinyal nedir?

  • C kursu
  • İleri seviye
  • Ders 13/83
  • 5 dk

Sinyal kavramını ve temel sinyalleri öğrenirsin.

Sinyal nedir?

Sinyal, işletim sisteminin bir sürece gönderdiği yazılımsal kesmedir. Bir olay olduğunu bildirir; süreç bunu yakalayıp bir işlev ile yanıt verebilir.

Her sinyalın bir adı ve numarası vardır. Yaygın olanlar: SIGINT (Ctrl+C ile kesme), SIGTERM (sonlandırma isteği) ve SIGKILL (zorla sonlandırma). SIGKILL ve SIGSTOP yakalanamaz. Sinyaller <signal.h> başlığında tanımlanır.

Sinyal kaynakları

Sinyaller çeşitli kaynaklardan gelebilir: kullanıcı (Ctrl+C → SIGINT), çekirdek (sıfıra bölme → SIGFPE), başka bir süreç (kill ile) veya süreç kendine (raise ile).

Sürece varsayılan davranış uygulanır: sonlandırma, çekirdek dökümü, yok sayma veya duraklatma. Varsayılan yerine kendi işlevini kurabilirsin; buna sinyal işleyici denir. İşleyiciyi signal veya sigaction ile kaydedersin.

Uygulama Sinyal adlarını yazdır

printf ile üç sinyal adını her satıra bir tane yazdır: printf("sinyal: SIGINT\n");, printf("sinyal: SIGTERM\n"); ve printf("sinyal: SIGKILL\n");.

Başlangıç kodu

main.c
#include <stdio.h>
#include <signal.h>

// sinyal: SIGINT yazdır
// sinyal: SIGTERM yazdır
// sinyal: SIGKILL yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <signal.h>

int main(void) {
    printf("sinyal: SIGINT\n");
    printf("sinyal: SIGTERM\n");
    printf("sinyal: SIGKILL\n");
    return 0;
}

Beklenen çıktı

sinyal: SIGINT
sinyal: SIGTERM
sinyal: SIGKILL

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi sinyal Ctrl+C ile gönderilir?

  • SIGINT Doğru cevap
  • SIGTERM
  • SIGKILL
  • SIGHUP

Açıklama: SIGINT, Ctrl+C ile gönderilen kullanıcı kesmesidir.

2 Sinyal başlık dosyası

Soru
#include <____.h>
Cevap
#include <signal.h>

Açıklama: signal.h, sinyal sabitlerini ve fonksiyonlarını tanımlar.

3 Sinyalleri anlamlarına eşle

Kavram Anlamı
SIGINT Ctrl+C kesmesi
SIGTERM Sonlandırma isteği
SIGKILL Zorla sonlandırma
SIGHUP Bağlantı koptu

İleri seviye bölümündeki tüm dersler