注册一个信号捕捉函数:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
该函数由ANSI定义,由于历史原因在不同版本的Unix和不同版本的Linux中可能有不同的行为。因此应该尽量避免使用它,取而代之使用sigaction函数。
void (*signal(int signum, void (*sighandler_t)(int))) (int);
注意多在复杂结构中使用typedef。
/*** catch¬¬_signal.c ***/ #include<stdio.h> #include<sys/time.h> #include<signal.h> void myfun(int signo) { printf("hello world\n"); } int main() { struct itimerval it,oldit; signal(SIGALRM,myfun); it.it_value.tv_sec = 5; it.it_value.tv_usec = 0; it.it_interval.tv_sec = 3; it.it_interval.tv_usec = 0; if(setitimer(ITIMER_REAL,&it,&oldit) == -1) { perror("setitimer error"); return -1; } while(1); return 0; }
原文:https://www.cnblogs.com/wanghao-boke/p/11333030.html