setitimer()函数
alarm函数会建立一个定时器,在seconds秒后,给当前进程发送SIGALRM信号
setitimer也可以创建定时器,和alarm函数相比,最显著的区别就是它可以指定到微秒,而且可以循环发送
man 2 setitimer
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <signal.h>
#include <string.h>
void sigHandler(int sig){
printf("[%d] caught signal : #%d: %s\n",time(NULL),sig,strsignal(sig));
}
int main()
{
//打印开始的时间戳
printf("[%d] start\n",time(NULL));
//注册SIGALRM信号处理函数,setitimer函数会不停的发送SIGALRM 信号
signal(SIGALRM,sigHandler);
struct itimerval it,oldit;
//第三秒时发送一次SIGALRM 信号
it.it_interval.tv_sec = 3;
it.it_interval.tv_usec = 0;
//以后每隔一秒发送一次SIGALRM信号
it.it_value.tv_sec = 1;
it.it_value.tv_usec = 0;
setitimer(ITIMER_REAL,&it,NULL);
while(1);
return 0;
}
setitimer函数
最新推荐文章于 2023-06-07 20:24:52 发布
本文介绍了setitimer函数与alarm函数的区别,并通过示例展示了如何使用setitimer创建一个定时器,该定时器能以微秒级别精度触发,并可设置为周期性发送SIGALRM信号。在示例代码中,程序会在特定时间间隔接收并处理SIGALRM信号。
摘要由CSDN通过智能技术生成