#include <sys/time.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>
/* ARGSUSED */
static void catch_sigalrm(int sig){
printf("%s\n", "SIGALRM received.");
return ;
}
static void (*Signal (int sig, void (*handler)(int)))(int){
struct sigaction act, oact;
act.sa_handler = handler;
act.sa_flags = 0;
#ifdef SA_INTERRUPT
act.sa_flags |= SA_INTERRUPT;
#endif
if (sigaction(sig, &act, &oact))
return SIG_ERR;
return oact.sa_handler;
}
int main(void){
struct itimerval it;
Signal(SIGALRM, &catch_sigalrm);
it.it_interval.tv_sec = 1;
it.it_interval.tv_usec = 0;
it.it_value.tv_sec = 1;
it.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &it, NULL);
/* CONSTCOND */
for (;;)
pause();
/* NOTREACHED */
return 0;
}
Linux 下设置时间间隔的Signal函数
最新推荐文章于 2020-12-06 21:22:43 发布