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; }
?