volatile sig_atomic_t fatal_error_in_progress = 0;
void
fatal_error_signal (int sig)
{
/* Bu eylemci çok sayıda sinyal çeşidi için kurulduğundan,
diğer sinyaller için de defalarca çağrılabilecektir. Bu
durumu izlemek için bir durağan değişken kullanacağız. */
if (fatal_error_in_progress)
raise (sig);
fatal_error_in_progress = 1;
/* Şimdi biraz temizlik yapalım:
- uçbirim kipleri sıfırlansın
- alt süreçler ölsün
- kilit dosyaları silinsin */
…
/* Şimdi sinyali tekrar yayınlayalım. Süreci sonlandırması için
sinyalin öntanımlı eylemini etkin kılıyoruz.
Tam bu anda exit veya abort
çağrısı yapabilmeli ve sürecin çıkış durumunun doğru ayarlanması
için sinyali yeniden yayınlamalıyız. */
signal (sig, SIG_DFL);
raise (sig);
}