Почему не срабатывает signal в функции?

Почему в функции «qsortx» не срабатывает сигнал? Ведь по идее условие if выполняется, так как i > size. Функция просто продолжает свою работу

Полный код:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void qsortx(int[], size_t);
void sig_handler(int);

int main(void) {
    size_t size = 5;
    int* ptr_mem = (int*)calloc(size, sizeof(int));
    
    if(ptr_mem == NULL) {
        perror("allocate");
    }
    for(int i = 0; i < size; i++) {
        ptr_mem[i] = 10-i;
    }

    qsortx(ptr_mem, size);
    
    for(int i = 0; i < size; i++) {
        printf("%d\n", ptr_mem[i]);
    }
    free(ptr_mem);
    return 0;
}

void qsortx(int mass[], size_t size) {
    static int i = 22; //counter
    int tmp = 0;
    signal(SIGSEGV, sig_handler);
    while(i < size) {
        if(i == 0) {
            i = 1;
        } else if (i > size) {
            raise(SIGSEGV);
            break;
        }
        if(mass[i-1] <= mass[i]) {
            ++i; // next step;
        } else { 
            tmp = mass[i];
            mass[i] = mass[i-1];
            mass[i-1] = tmp;
            --i; // back step;
        }
    }
}

void sig_handler(int sig) {
    printf("Signal: %d\n", sig);
    exit(EXIT_FAILURE);
}

Ответы (0 шт):