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

int
main(int argc, char *argv[])
{
    int i, n;

    n = 10;         // number of SIGABRT signals to be raised.
    if (signal(SIGABRT, SIG_IGN) == SIG_ERR)
        err(EXIT_FAILURE, "signal");

    printf("signal SIGABRT will be ignored\n");
    printf("raise %d SIGABRT\n", n);

    for (int i = 0; i < n; i++) {
        printf("raise() signal SIGABRT #%d\n", i);
        raise(SIGABRT);
        sleep(1);
    }

    printf("now call abort() function\n");
    abort();

    printf("programmed ended successfully.");   /* UNREACHABLE */
    exit(EXIT_SUCCESS);
}
