LINUX.ORG.RU
Ответ на: комментарий от UVV

Сделай тогда это хотя бы с помощью kill

anonymous
()
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/resource.h>

void h(int a)
{
    struct rlimit nolimit = {RLIM_INFINITY, RLIM_INFINITY};
    printf("SIGINT\n");
    setrlimit(RLIMIT_CORE, &nolimit);
    abort();
}

int main(void)
{
    struct sigaction sa;
	
    memset(&sa, 0, sizeof(sa));
    sa.sa_handler = h;

    sigaction(SIGINT, &sa, NULL);

    while (1) {
        printf("tick\n");
        sleep(1);
    }
    return 0;
}
i-rinat ★★★★★
()
Ответ на: комментарий от theNamelessOne

Ну а если ты не хочешь, чтобы при этом программа завершалась, то можно сделать форк:

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

void sigint_handler(int dummy)
{
    pid_t pid = fork();

    if(pid == 0) {
        signal(SIGABRT, SIG_DFL);
        abort();
    } else {
        waitpid(pid, NULL, 0);
        fputs("Core dumped\n", stderr);
    }
}
theNamelessOne ★★★★★
()
Ответ на: комментарий от UVV

можно воспользоваться вызовом raise()

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.