signal()
может быть опасно в некоторых операционных системах и в Linux заменяется на sigaction()
. «сигнал против сигмации»
Вот пример, который я недавно наткнулся ( "Нажмите на сигнал прерывания" ) и изменил его, играя с ним.
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
#include<string.h>
struct sigaction old_action;
void sigint_handler(int sig_no)
{
printf("CTRL-C pressed\n");
sigaction(SIGINT, &old_action, NULL);
kill(0, SIGINT);
}
int main()
{
struct sigaction action;
memset(&action, 0, sizeof(action));
action.sa_handler = &sigint_handler;
sigaction(SIGINT, &action, &old_action);
pause();
return 0;
}