今天在看mqtt的源码时,看到一个闹钟函数的使用,存下来备用。
sigact.sa_handler = my_signal_handler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
if(sigaction(SIGALRM, &sigact, NULL) == -1){
perror("sigaction");
return 1;
}
if(cfg.timeout){
alarm(cfg.timeout);
}
unsigned int alarm(unsigned int seconds);
alarm也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,它
向进程发送SIGALRM信号
int sigemptyset(sigset_t *set);
sigemptyset用来将参数set信号集初始化并清空。
可以用来查询或设置信号处理方式。
int sigaction(int signum,const struct sigaction *act ,struct sigaction
*oldact);