signal函数
注册一个信号捕捉函数:
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; }