xranzei 1
xranzei
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle

arat değiştir serisi chibi codes #1

  • Konuyu başlatan Konuyu başlatan mistikaptal
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 8
  • Görüntüleme Görüntüleme 806
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

arat

Kod:
void emergency_sig(int sig)
{
    if (sig == SIGSEGV)
        sys_log(0, "SIGNAL: SIGSEGV");
    else if (sig == SIGUSR1)
        sys_log(0, "SIGNAL: SIGUSR1");

    if (sig == SIGSEGV)
        abort();
}

değiştir

Kod:
void emergency_sig(int sig)
{
    switch (sig)
    {
        case SIGSEGV:
            fprintf(stderr, "FATAL ERROR: Segmentation Fault (SIGSEGV)\n");
            fflush(stderr);
            abort();
            break;
        case SIGBUS:
            fprintf(stderr, "FATAL ERROR: Bus Error (SIGBUS)\n");
            fflush(stderr);
            abort();
            break;
        case SIGILL:
            fprintf(stderr, "FATAL ERROR: Illegal Instruction (SIGILL)\n");
            fflush(stderr);
            abort();
            break;
        case SIGFPE:
            fprintf(stderr, "FATAL ERROR: Floating Point Exception (SIGFPE)\n");
            fflush(stderr);
            abort();
            break;
        case SIGUSR1:
            fprintf(stderr, "Received signal: SIGUSR1 (User-defined signal)\n");
            fflush(stderr);
            break;
        default:
            fprintf(stderr, "Received unknown signal: %d\n", sig);
            fflush(stderr);
            break;
    }
}
 

En Çok Reaksiyon Alan Mesajlar

AÇIKLAMA :

Fonksiyonun Yaptığı İşler:​


  1. Parametre (int sig)
    Gelen sinyalin numarasını alır (örneğin SIGSEGV, SIGBUS gibi).
    switch-case Yapısı
    Hangi sinyalin geldiğine göre farklı işlemler yapar:

    • SIGSEGV (Segmentation Fault)
      Geçersiz bellek erişimi (null pointer, read-only alana yazma gibi) durumunda oluşur.
      LOGLARA "FATAL ERROR: Segmentation Fault (SIGSEGV)" yazdırır ve programı abort() ile sonlandırır.
      SIGBUS (Bus Error)
      Bellek hizalamasıyla ilgili bir hata (örneğin, 4-byte'lık bir integer'ı tek byte'lık adrese yazmaya çalışmak).
      "FATAL ERROR: Bus Error (SIGBUS)" yazdırır ve abort() ile çıkar.
      SIGILL (Illegal Instruction)
      Geçersiz CPU komutu çalıştırıldığında (bozuk binary, yetkisiz işlem).
      "FATAL ERROR: Illegal Instruction (SIGILL)" yazdırıp abort() ile çıkar.
      SIGFPE (Floating Point Exception)
      Sıfıra bölme, taşan floating-point işlemleri gibi durumlarda.
      "FATAL ERROR: Floating Point Exception (SIGFPE)" yazdırıp abort() ile çıkar.
      SIGUSR1 (User-defined Signal 1)
      Kullanıcı tanımlı bir sinyal (kill -USR1 <PID> ile gönderilebilir).
      Sadece "Received signal: SIGUSR1 (User-defined signal)" yazdırır, programı sonlandırmaz.
      Diğer Sinyaller
      Tanımlanmamış bir sinyal gelirse "Received unknown signal: <sinyal_no>" yazdırır.
    fflush(stderr)
    Hata mesajlarının hemen Syserr basılmasını sağlar (buffer'ı boşaltır).



ARKADAŞ KENDİDE BİLMEDİĞİ İÇİN AÇIKLAMA YAPAMADI HERALDE.

arat

Kod:
void emergency_sig(int sig)
{
    if (sig == SIGSEGV)
        sys_log(0, "SIGNAL: SIGSEGV");
    else if (sig == SIGUSR1)
        sys_log(0, "SIGNAL: SIGUSR1");

    if (sig == SIGSEGV)
        abort();
}

değiştir

Kod:
void emergency_sig(int sig)
{
    switch (sig)
    {
        case SIGSEGV:
            fprintf(stderr, "FATAL ERROR: Segmentation Fault (SIGSEGV)\n");
            fflush(stderr);
            abort();
            break;
        case SIGBUS:
            fprintf(stderr, "FATAL ERROR: Bus Error (SIGBUS)\n");
            fflush(stderr);
            abort();
            break;
        case SIGILL:
            fprintf(stderr, "FATAL ERROR: Illegal Instruction (SIGILL)\n");
            fflush(stderr);
            abort();
            break;
        case SIGFPE:
            fprintf(stderr, "FATAL ERROR: Floating Point Exception (SIGFPE)\n");
            fflush(stderr);
            abort();
            break;
        case SIGUSR1:
            fprintf(stderr, "Received signal: SIGUSR1 (User-defined signal)\n");
            fflush(stderr);
            break;
        default:
            fprintf(stderr, "Received unknown signal: %d\n", sig);
            fflush(stderr);
            break;
    }
}
değiştirdiğiniz şeyin oyun içerisinde ne gibi değişiklikler yaptığını detaylıca açıklar mısınız ve eklenebliyorsa lütfen kanıt ekleyin.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst