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
#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
#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ı
#include <____.h>
#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 |