# Unix Signal (Unix Sinyali)

Adres: https://softwaredictionary.org/tr/terimler/unix-signal
Kategori: İşletim Sistemleri
Son güncelleme: 2026-09-30
Türkçe karşılığı: sinyal
Okunuşu: yuniks signıl

Kısaca: Unix signal, kernel'ın bir process'e durdurma isteği, hata ya da dolan bir zamanlayıcı gibi bir olayı bildirmek için ilettiği kısa ve asenkron bir bildirimdir.

## Unix signal (sinyal) nedir?

Unix signal, Linux, macOS ve BSD'ler gibi Unix benzeri sistemlerde basit bir iletişim biçimidir. Her signal adı olan numaralı bir olaydır: `SIGINT` Ctrl+C'ye bastığınızda gönderilir, `SIGTERM` bir process'ten nazikçe sonlanmasını ister, `SIGKILL` onu zorla durdurur, `SIGHUP` terminalin kapandığını bildirir ve çoğu zaman yapılandırmayı yeniden yüklemek için kullanılır, `SIGSEGV` geçersiz bir bellek erişimini bildirir ve `SIGCHLD` üst process'e bir alt process'in çıktığını söyler.

Signal'lar bir şey olduğunda kernel tarafından, belirli tuşlara bastığınızda terminal tarafından ya da `kill` system call'ı veya komutuyla başka bir process tarafından gönderilebilir. Bir signal geldiğinde process'in normal akışı kesilir ve üç şeyden biri olur: varsayılan eylem, örneğin process'i sonlandırma, çalışır; signal yok sayılır; ya da özel bir işleyici fonksiyon çalışır. `SIGKILL` ve `SIGSTOP` hiçbir zaman yakalanamaz veya yok sayılamaz. Bir işleyici neredeyse her an çalışabildiği için çok az iş yapmalıdır; örneğin ana programın kontrol ettiği bir bayrak ayarlamak gibi.

Signal, omuza dokunulması gibidir: mesaj minicik, yalnızca hangi dokunuş olduğu, ama birinin yaptığı işi bırakıp yanıt vermesini sağlar. Signal'lar düzgün kapatma (graceful shutdown) için önemlidir. Container platformları `SIGTERM` gönderir, bir tolerans süresi (Kubernetes'te varsayılan olarak 30 saniye) bekler ve ardından `SIGKILL` gönderir; bu yüzden sunucular `SIGTERM`'i yakalamalı, yeni istekleri kabul etmeyi bırakmalı, devam edenleri bitirmeli ve temiz biçimde çıkmalıdır.

Signal'lar çoğu zaman donanım interrupt'larıyla karıştırılır. Interrupt CPU'ya iletilir ve kernel tarafından işlenir; signal ise kernel tarafından bir kullanıcı process'ine iletilir; bu yüzden signal'lara bazen process'ler için yazılım interrupt'ları denir. `kill` komutunun adı da yanıltıcıdır: herhangi bir signal gönderebilir ve varsayılan olarak `SIGTERM` gönderir. Windows Unix signal'larını kullanmaz ve kendi mekanizmalarına sahiptir; ancak C çalışma zamanı birkaçını taklit eder.

## Önemli noktalar

- Signal, bir process'e iletilen küçük, asenkron bir bildirimdir.
- Yaygın signal'lar arasında `SIGINT`, `SIGTERM`, `SIGKILL` ve `SIGHUP` vardır.
- Bir process varsayılan eylemi kullanabilir, signal'i yok sayabilir veya bir işleyici çalıştırabilir.
- `SIGKILL` ve `SIGSTOP` yakalanamaz veya yok sayılamaz.
- `SIGTERM`'i işlemek container'larda ve servislerde düzgün kapatmayı mümkün kılar.

## Örnek: Bir Bash betiğinde signal'ları işlemek

```bash
#!/usr/bin/env bash
# Run cleanup when the script gets SIGINT (Ctrl+C) or SIGTERM
cleanup() { echo "Cleaning up..."; rm -f /tmp/myjob.lock; exit 0; }
trap cleanup INT TERM

touch /tmp/myjob.lock
sleep 300 &
wait $!  # waiting this way lets the trap run right away

# From another terminal:
#   kill -TERM <pid>   polite request to stop (the default signal)
#   kill -KILL <pid>   forced stop that cannot be caught or ignored
```

## Sık sorulan sorular

**SIGTERM ile SIGKILL arasındaki fark nedir?**

`SIGTERM` bir process'ten durmasını ister ve ona temizlik yapma şansı verir; yakalanabilir veya yok sayılabilir. `SIGKILL` ise kernel'ın process'i temizlik şansı vermeden hemen durdurmasını sağlar.

**Bir terminalde Ctrl+C'ye bastığımda ne olur?**

Terminal ön plandaki process'e `SIGINT` gönderir. Varsayılan olarak bu programı sonlandırır; ancak programlar onu yakalayabilir, örneğin işi kaydetmek ya da önce onay istemek için.

**Windows'ta Unix signal'ları var mı?**

Yerel olarak yok. Windows, Ctrl+C için konsol denetim olayları gibi kendi mekanizmalarını kullanır; ancak C çalışma zamanı uyumluluk için `SIGINT` gibi bir avuç signal'i destekler.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
